Search code examples
regexxmllanguagetool

LanguageTool : words followed by word different from


How can I match a series of words followed by a word different from x?

For instance, how can I match at the cost of followed by a word different from some?

I have tried the following, but to no avail:

<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>

Solution

  • LanguageTool works on tokens. Using regexp is a special case and if using regexp, they work on single tokens (when using pattern). This will solve your problem:

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

    To use regular expressions anyway, use <regexp> as documented at http://wiki.languagetool.org/development-overview#toc8.