我想知道如何使用Python风格的正则表达式来匹配不包含特定单词的行(只需使用正则表达式,不涉及Python函数)?
Example:
PART ONE OVERVIEW 1
Chapter 1 Introduction 3
我想匹配不包含“PART”一词的行?
这应该有效:
/^((?!PART).)*$/
编辑(根据要求):这是如何工作的
The (?!...)
语法是负前瞻 http://www.regular-expressions.info/lookaround.html,我一直觉得很难解释。基本上,这意味着“这一点后面的任何内容都不能与正则表达式匹配/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.
The ((?!xxx).)*
成语可能是最难理解的。正如我们所看到的,(?!PART)
查看前面的字符串并说接下来的任何内容都无法匹配子模式/PART/
。那么我们正在做什么((?!xxx).)*
正在逐个字母地检查字符串并将规则应用于所有字符串。每个字符可以是任何字符,但是如果您采用该字符及其后面的几个字符,则最好不要得到这个词PART.
The ^
and $
锚点的作用是要求将规则从头到尾应用于整个字符串。如果没有这些锚点,任何不以PART会是一场比赛。甚至PART本身会有匹配项,因为(例如)字母 A 后面没有确切的字符串PART.
既然我们有^
and $
, if PART位于字符串中的任何位置,其中一个字符将匹配(?=PART).
整个比赛就会失败。希望这足够清楚,能够有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)