【发布时间】:2020-02-10 11:58:33
【问题描述】:
我正在尝试为 Watson Assistant 实体创建一个正则表达式模式,以检测类似于粗体的日期:
- 日期 25/2/2020 30/2/2020
- 日期 /25/2 30/2 的
- 日期 18/02
- 日期 12/12/
- 日期 12/12/
- 日期 12/12
我使用了以下表达式来做到这一点:
( \b(?:3[01]|[12][0-9]|0?[1-9])([\-/.])(1[1-2]|0?[1-9])(?![\-/.])\b )
这个表达式很好用,问题是 Watson 中使用的模式比较引擎有语法限制。
实体模式不能包含:
- 正向重复(例如,x*+)
- 以前的引用(例如,\g1)
- 条件分支(例如,(? (Cond) true))
此时,我不能使用 (?![-/.]) 来避免像“25/02/2020”这样的日期。
我该怎么做?
提前致谢,
【问题讨论】:
-
您的模式基于什么正则表达式引擎?您是否尝试过将其转换为 Java 正则表达式? docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
-
正则表达式引擎松散地基于Java正则表达式引擎。 (cloud.ibm.com/docs/services/…)
-
匹配日期的实际规则(用人类的话来说)是什么?我发现很难理解您需要/打算做什么。
-
只有当格式为日/月时才需要匹配。如果是日/月/年,则无效。
标签: regex ibm-watson watson-assistant