3

我刚刚开始使用 Ruta,我想编写一个规则来查找字符、数字和点 (.) 的任意组合。

(它的 JAVA 正则表达式 - ([a-z0-9.]+) )

例如 -

abcd.03ef0.3abc

03a.bcd.03eeff903a.bc

4

2 回答 2

1

类似于以下内容:

(SW | NUM | PERIOD)+{-> MyType};

或者如果还应包括大写字符:

(W | NUM | PERIOD)+{-> MyType};

之前更改过滤设置,如果两者之间没有空格:

Document{-> RETAINTYPE(SPACE,BREAK,MARKUP)};

为了避免重叠匹配,您可以使用 MARKONCE 代替隐式操作、附加(否定)条件 -PARTOF(MyType),或使用 GREEDYANCHORING 更改匹配策略。

于 2014-07-02T17:34:11.060 回答
0

我一直在关注这个问题一段时间。我也有类似的问题。

我的问题是匹配用逗号分隔的大数字,例如:123,343,223

我已经编写了类似于答案的规则,但它产生了太多的匹配项:

123,343,223
123,343
343,223
....

我的规则是这样的:

(NUM COMMA)+ {-> LargeNum} NUM;

它只是不能完全匹配我想要匹配的内容,即。123,343,223。问题是量词。您需要量词才能重复应用相同的规则。但结果是它产生了比预期更多的匹配。

显然,它需要进一步过滤。

于 2014-07-05T05:54:56.813 回答