Java UIMA:正则表达式中的正则表达式变量?
我正在使用UIMA中的RegEx Annotator。我知道我可以在这样的XML描述符文件创建的正则表达式变量:Java UIMA:正则表达式中的正则表达式变量?
<variables>
<variable name="month" value="(Jan|Feb|March)" />
</variables>
和访问它像这样的规则:
<rules>
<rule regEx="Month: \v{month}" />
</rules>
这将匹配Month: Jan
和Month: Feb
和Month: Mar
。
现在我想在另一个变量里面使用变量,这可能吗? 我期待这样的事情:
<variables>
<variable name="monthmonth" value="\v{month}\v{month}" />
</variables>
,我想创建相应的规则来匹配Month: JanJan
例如。
我在http://uima.apache.org/downloads/sandbox/RegexAnnotatorUserGuide/RegexAnnotatorUserGuide.html#sandbox.regexAnnotator.conceptsFile.regexVariables阅读文档,并没有提及关于使用内部变量的正则表达式变量的可能性,虽然它说的The variables can be used in all concept definition within the same file.
我使用UIMA RegularExpressionAnnotator 2.3.1。
任何帮助表示赞赏。 =)
根据该文档,
正则表达式的变量名可以包含以下任一字符
[a-zA-Z_0-9]
的。其他字符是不允许的。
如果这是唯一的限制,123
将是一个有效的名称,你可以称为。解析器应该如何知道你的意思是名为“123”的规则而不是一百二十三个垂直制表符?
在大多数语言(包括XML)中,名称不能以数字开头。如果在这种情况下,可以在变量定义中嵌入变量名称,因为\v{month}
或\v{_123}
在Java正则表达式中保证无效。 (其他正则表达式更加自由;他们会将大括号解释为文字大括号字符,因为{month}
和{_123}
不能被解释为范围表达式。)
要确定的唯一方法就是测试它。这听起来像是一个很好的功能,如果不支持,也许你应该请求它。
我在问这个评论,因为我试过了,它只是从字面上解释变量'\ v {monthmonth}'的值,这意味着它会试图将'\ v {month} \ v {month}'评估为正则表达式,为此它返回错误。 如何向UIMA申请此功能? 感谢您的回复,我不认为我们可以从变量名的限制中推断出某些东西。你是相当亲= D – justhalf
该项目的[网站](http://uima.apache.org/)似乎提供了问题跟踪器,论坛等问题的常用链接。谁知道,你甚至可能在那里找到一个人谁知道一些事情。 ;) –
...与像我这样的人相反,在花费30秒钟浏览文档后做野驴猜测。 (不确定它在原始评论中是否出现过这种情况。) –