2

我正在 UIMA 中使用 RegEx Annotator。我知道我可以像这样在 XML 描述符文件中创建正则表达式变量:

<variables>
    <variable name="month" value="(Jan|Feb|March)" />
</variables>

并在规则中像这样访问它:

<rules>
    <rule regEx="Month: \v{month}" />
</rules>

这将匹配Month: JanandMonth: FebMonth: 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。

任何帮助表示赞赏。=)

4

1 回答 1

2

根据文档,

正则表达式变量名可以包含以下任何字符[a-zA-Z_0-9]。不允许使用其他字符。

如果这是唯一的限制,那123将是一个有效的名称,您可以将其称为value="\v{123}". 解析器应该如何知道您的意思是名为“123”的规则而不是 123 个垂直制表符?

在大多数语言(包括 XML)中,名称不能以数字开头。如果是这种情况,则可以在变量定义中嵌入变量名,因为\v{month}or\v{_123}在 Java 正则表达式中被保证是无效的。(其他正则表达式风格更自由;它们会将大括号解释为文字大括号字符,因为{month}并且{_123}不能解释为范围表达式。)

唯一确定的方法是测试它。对我来说,这听起来是个不错的功能;如果不支持,也许你应该请求它。

于 2013-08-05T06:04:23.797 回答