问题是一个不包含字母PART的正则表达式。这是一个答案: / ^((?PART)。)* $ /
问题链接:How to match a line not containing a word
我的问题是,除非你指明开始(^)和结束($),为什么它不起作用? 为什么不只是((?!PART)。)*工作?
答案 0 :(得分:0)
模式
/^((?!PART).)*$/
匹配一般模式^.*$
,即开始和结束锚点之间发生的任何事情。但是,它还包含否定的断言 (?!PART)
。如上所述,您的模式断言,在字符串中的每个位置,当向前看四个字符时,字符串PART
不会出现。
如果你只是使用这种模式:
/((?!PART).)*/
然后它只表示PART
不会出现在字符串中的任何特定点。但是作为this demo shows,PART hello world
之类的字符串会匹配此替代模式,可能不是您想要的。
答案 1 :(得分:0)
因为" line"没有"多线"国旗re.M
。此外,如果您只匹配包含PART的行的部分,那么您的所有匹配也将是字符串" PART"或者在上面的例子中" PART" +整个剩余行(取决于标志)。
^
=行首
$
=行尾
re.S
= DOTALL,一个点包括空格/行尾标记
re.M
= MULTILINE不将lineendings视为匹配结尾
如果没有明确说明,你只会进行子串匹配并完全忽略行结尾。