试图匹配副词以ly而不是比较/最高级形式的副词

时间:2018-12-04 14:12:33

标签: regex regular-language

我有以下副词:

fastly onffly fly incomprehensibly totaly happily 

lily sly more happily 

most seriously

我只想匹配以ly结尾的普通副词,而不是以ly结尾的比较级和最高级。

上面的示例中,如果前一个单词是 more most ,我不想匹配以 ly 结尾的单词。

我试图这样做:

(?:^[more|most])\s?\w*ly

但是我没有任何比赛。任何想法? demo that I tried to rework.

1 个答案:

答案 0 :(得分:1)

没有“通用正则表达式”,如果您使用正则表达式,则背后有一些正则表达式库。在您的情况下,您尝试使用PCRE regex库,因此您可以考虑其中一个

\b(?<!\bmore |\bmost )\w*ly\b

请参见demo。或者,一个SKIP-FAIL regex

\b(?:more|most)\s+\w*ly(*SKIP)(*F)|\w*ly\b

请参见another regex demo

详细信息

  • \b-单词边界
  • (?<!\bmore |\bmost )-当前位置之前不应有完整的单词moremost,后接1个空格。
  • \w*-0个以上的字符字符
  • ly\b-ly的单词结尾(ly后跟单词边界)。

在“跳过失败”正则表达式中,\b(?:more|most)\s+\w*ly匹配所有moremost ~ly单词组合,丢弃它们并匹配后缀为ly的单词位置。