Regex 在uima RUTA中使用正则表达式检测以下字符串
我试图在UIMA RUTA中使用正则表达式将下面的字符串注释为一个类型 样本:Regex 在uima RUTA中使用正则表达式检测以下字符串,regex,regex-greedy,uima,uimanageddocument,ruta,Regex,Regex Greedy,Uima,Uimanageddocument,Ruta,我试图在UIMA RUTA中使用正则表达式将下面的字符串注释为一个类型 样本: *******$10.00* 其他变体: *******$10.00*** *******$90.00* *******99美元** 正则表达式:*+\$\d+。\d+*+ UIMA正则表达式: SPECIAL{REGEXP("\\*+\\$\\d+.\\d+\\*+") -> MARK(AmC,1)}; 我无法检测到as*表示贪婪的正则表达式,但在使用escape character()时,仍然缺少
- *******$10.00*
- *******$10.00***
- *******$90.00*
- *******99美元** 正则表达式:*+\$\d+。\d+*+
SPECIAL{REGEXP("\\*+\\$\\d+.\\d+\\*+") -> MARK(AmC,1)};
我无法检测到as*表示贪婪的正则表达式,但在使用escape character()时,仍然缺少一些内容。有解决方法吗
PS:它适用于其他正则表达式引擎,但不适用于UIMA RUTA
REGEXP条件将Java模式
matches()
应用于规则元素的匹配注释的覆盖文本。在您的示例中,这是SPECIAL
,它是一个特殊字符。因此,正则表达式尝试在单个“*”上匹配,然后重新匹配下一个字符(不包括数字和句点)
REGEXP条件在这里并不真正合适。您应该使用简单的正则表达式规则,如:
"\\*+\\$\\d+.\\d+\\*+" -> AmC;
免责声明:我是UIMA Ruta的开发人员您忘记了在星号之前双转义最后一个反斜杠(假设您需要双转义)。另外,也许您需要边界标记?
SPECIAL{REGEXP(.\\\\\+\$\\d+\\\.\\d+\\\*+.*)->标记(AmC,1)}代码>???@TimBiegeleisen当我在regex101.com上测试时,它是有效的,但在UIMA RUTA中不起作用。这不起作用,因为该条件只应用于匹配注释的覆盖文本,它只表示所需字符串的一部分。相反,regex看不到足够的文本,无法完全匹配。我会补充一个答案…像个魔咒一样工作。非常感谢你如此精彩的解释。