代码之家  ›  专栏  ›  技术社区  ›  tavalendo

正则表达式不分离(不)

  •  0
  • tavalendo  · 技术社区  · 7 年前

    不应该不应该

    我希望它能匹配

    https://www.regexpal.com/?fam=106183 用正则表达式。

    编辑:

    1 回复  |  直到 7 年前
        1
  •  2
  •   Tom Lord    7 年前

    试图用正则表达式完美地解析自然语言永远不会是“完美的”。语言包含太多的怪癖和例外。

    以下是一个基本方法:

    /n't|\b\w+(?!'t)/
    

    这是匹配的 "n't" ,或“任何单词,不包括最后一个字母 "'t"

    您可能希望在此基础上稍作扩展,但它解决了您提供的用例:

    Demo


    最小的

    /[a-z]?'[a-z]{1,}|[\w-]+/
    

    考虑它如何与字符串匹配:

    "weren't"
    
    • 首先是人物 weren 与之匹配的是 [\w-]+ 图案的一部分。
    • 然后, 't [a-z]?'[a-z]{1,} 图案的一部分。

    从根本上说,拥有贪婪的 [\w-]+ 此模式中的节将意味着它无法工作。这将始终符合并包括 "n" 在里面 ,这意味着非三字母单词的整体匹配失败。