我想知道如何在没有两个单词的情况下匹配一条线?
例如,我想匹配一条既没有Chapter
也没有Part
的行。所以这两条线都不匹配:
("Chapter 2 The Economic Problem 31" "#74")
("Part 2 How Markets Work 51" "#94")
虽然这是匹配
("Scatter Diagrams 21" "#64")
我的python风格的正则表达式将像(?<!(Chapter|Part)).*?\n
。我知道这不对,感谢你的帮助。
答案 0 :(得分:6)
试试这个:
^(?!.*(Chapter|Part)).*
答案 1 :(得分:1)
@ MRAB的解决方案将起作用,但这是另一种选择:
(?m)^(?:(?!\b(?:Chapter|Part)\b).)*$
.
一次匹配一个字符,之后前瞻检查它不是Chapter
或Part
的第一个字符。单词边界(\b
)确保它不会错误地匹配较长单词的一部分,例如Partition
。
^
和$
是开始和结束的锚点;他们确保你匹配整行。 $
优于\n
,因为它也匹配 last 行的结尾,该行最后不一定会有换行符。开头的(?m)
修改了锚点的含义;没有它,它们只匹配整个输入的开头和结尾,而不是单个行。