匹配没有两个单词的行

时间:2011-07-04 23:12:56

标签: regex

我想知道如何在没有两个单词的情况下匹配一条线?

例如,我想匹配一条既没有Chapter也没有Part的行。所以这两条线都不匹配:

("Chapter 2 The Economic Problem 31" "#74")

("Part 2 How Markets Work 51" "#94")

虽然这是匹配

("Scatter Diagrams 21" "#64")

我的python风格的正则表达式将像(?<!(Chapter|Part)).*?\n。我知道这不对,感谢你的帮助。

2 个答案:

答案 0 :(得分:6)

试试这个:

^(?!.*(Chapter|Part)).*

答案 1 :(得分:1)

@ MRAB的解决方案将起作用,但这是另一种选择:

(?m)^(?:(?!\b(?:Chapter|Part)\b).)*$

.一次匹配一个字符,之后前瞻检查它不是ChapterPart的第一个字符。单词边界(\b)确保它不会错误地匹配较长单词的一部分,例如Partition

^$是开始和结束的锚点;他们确保你匹配整行。 $优于\n,因为它也匹配 last 行的结尾,该行最后不一定会有换行符。开头的(?m)修改了锚点的含义;没有它,它们只匹配整个输入的开头和结尾,而不是单个行。