正则表达式:匹配除特定模式以外的所有内容

我需要一个正则表达式能够匹配所有,一个以特定模式开头的字符串(特别是index.php及其后面的内容,如index.php?id=2342343)。

736808 次浏览

只匹配/^index\.php/,然后拒绝匹配它的任何东西。

你可以从一开始就使用负前向,例如,^(?!foo).*$不应该匹配以foo开头的任何内容。

Python:

>>> import re
>>> p='^(?!index\.php\?[0-9]+).*$'
>>> s1='index.php?12345'
>>> re.match(p,s1)
>>> s2='index.html?12345'
>>> re.match(p,s2)
<_sre.SRE_Match object at 0xb7d65fa8>

你可以在字符集的开头放置^来匹配除这些字符以外的任何字符。

[^=]*

将匹配除=

正则表达式:匹配所有:

演示报告:换行符\n在演示中的反字符类中使用,以避免匹配溢出到相邻行。在测试单个字符串时,它们是不必要的。

锚注:在许多语言中,使用\A来定义字符串的明确开头,使用\z(在Python中是\Z,在JavaScript中是$)来定义字符串的结尾。

点注意:在许多类型中(但不包括POSIX, TRE, TCL), .匹配任何字符而是换行符字符。确保使用了相应的DOTALL修饰符(PCRE/Boost/中的/s。NET/Python/Java和Ruby中的/m),以便.匹配包括换行符在内的任何字符。

反斜杠注意:在必须使用允许转义序列的C字符串声明模式的语言中(如\n为换行符),您需要使用双反斜杠来转义特殊字符,以便引擎可以将它们视为文字字符(例如,在Java中,world\.将被声明为"world\\.",或使用字符类:"world[.]")。使用原始字符串字面量(Python r'\bworld\b'), c#逐字字符串字面量@"world\.",或斜杠字符串/正则表达式字面量符号,如/world\./