如何匹配不包含单词的一行

这个问题在这里已经有了答案:

  • 正则表达式匹配不包含单词的行吗? 25个答案

  • 这应该工作:

    /^((?!PART).)*$/
    

    如果你只想从行首开始排除它(我知道你没有,但只是FYI),你可以使用这个:

    /^(?!PART)/
    

    编辑(通过请求):为什么这个模式有效

    (?!...)语法是一种负面预测,我一直很难解释。 基本上,这意味着“此后的任何内容都不能与正则表达式/PART/匹配。” 我已经链接的网站比我更好地解释了这一点,但我会尽力打破这一点:

    ^         #Start matching from the beginning of the string.    
    (?!PART)  #This position must not be followed by the string "PART".
    .         #Matches any character except line breaks (it will include those in single-line mode).
    $         #Match all the way until the end of the string.
    

    ((?!xxx).)*成语可能最难理解。 正如我们所看到的, (?!PART)先看字符串,并说接下来的任何内容都不能匹配子模式/PART/ 。 所以我们在做什么((?!xxx).)*是逐字逐字地处理字符串,并将规则应用于所有字符。 每个角色都可以是任何东西,但是如果你把那个角色和其后的几个角色拿走,你最好不要说PART。

    ^$锚在那里要求规则应用于整个字符串,从头到尾。 如果没有这些锚点,那么没有以PART开头的任何一段弦乐都将是一场比赛。 即使PART本身也会有匹配的,因为(例如)字母A没有紧跟在确切的字符串PART之后。

    既然我们有^$ ,如果PART在字符串中的任何位置,其中一个字符就会匹配(?=PART). 整体比赛将失败。 希望这已经足够清楚,有帮助。

    链接地址: http://www.djcxy.com/p/13375.html

    上一篇: How to match a line not containing a word

    下一篇: RegEx to exclude a specific string constant