0

如何匹配一系列单词后跟一个不同于的单词x

例如,我如何匹配at the cost of后跟一个不同于 的单词some

我尝试了以下方法,但无济于事:

<rule id="AT_THE_COST_OF_!SOME" name="at the cost of !some">
<pattern>
<token>at</token>
<token>the</token>
<token>cost</token>
<token>of</token>
<token regexp="yes">/^((?!some).)*$</token>
</pattern>
<message>Did you mean <suggestion>at the cost of some \5</suggestion>?</message>
<example correction='at the cost of some efforts'>Yes, it comes 
<marker>at the cost of efforts</marker>.</example>
</rule>
4

2 回答 2

0

传统的正则表达式也可以通过使用<regexp>标签而不是使用标签来使用<token>。(但需要 LanguageTool 3.2 或更高版本才能使用<regexp>)。欲了解更多信息 -维基

<regexp>(at the cost of (?!some\b))\w+<regexp>

匹配的模式:

以某人为代价

不惜一切代价

模式丢弃:

以一些为代价

在这里测试

于 2016-06-03T18:39:12.267 回答
0

LanguageTool 适用于令牌。使用 regexp 是一种特殊情况,如果使用 regexp,它们适用于单个标记(使用 时pattern)。这将解决您的问题:

<pattern>
    <token>at</token>
    <token>the</token>
    <token>cost</token>
    <token>of</token>
    <token><exception>some</exception></token>
</pattern>

要使用正则表达式,请<regexp>按照http://wiki.languagetool.org/development-overview#toc8中的说明使用。

于 2016-06-04T15:35:54.257 回答