Regex:匹配除特定模式之外的所有内容

2024-04-19 18:24:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个regex,它能够匹配所有的但是一个以特定模式开头的字符串(特别是index.php和后面的内容,比如index.php?id=2342343


Tags: 字符串id内容index模式regexphp
3条回答

不是regexp专家,但我认为您可以从一开始就使用否定的lookahead,例如^(?!foo).*$不应该匹配以foo开头的任何内容。

您可以将^放在字符集的开头,以匹配除这些字符以外的任何字符。

[^=]*

将匹配除=之外的所有内容

Regex:match everything但是:

  • a字符串特定模式开头(例如,任何-空,也-字符串不以foo开头):
    • 基于前瞻性的NFA解决方案:
    • 不支持lookarounds的正则表达式引擎的基于否定字符类的解决方案:
  • a字符串特定模式结尾(例如,结尾处没有world.):
    • 基于查找的解决方案:
    • POSIX解决方案:
  • 包含特定文本的字符串(例如,与具有foo的字符串不匹配)(没有符合POSIX的patern,对不起):
  • 一个字符串包含特定的字符(例如,避免匹配具有|符号的字符串):
  • a字符串等于某些字符串(例如,不等于foo):
  • 字符序列:
    • PCRE(匹配除cat之外的任何文本):^{}^{}
    • 其他允许查找的引擎:^{}(或^{},或(cat)|[^c]+(?:c(?!at)[^c]*)*|(?:c(?!at)[^c]*)+[^c]*)然后使用语言检查意味着:如果组1匹配,则不是我们需要的,否则,如果不为空,则获取匹配值
  • 特定的单个字符或一组字符:

演示说明:新行\n用于演示中的否定字符类内,以避免与相邻行的匹配溢出。测试单个字符串时不需要它们。

锚注:在许多语言中,使用\A定义字符串的明确开头,使用\z(在Python中,它是\Z,在JavaScript中,$可以)定义字符串的最末端。

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

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

相关问题 更多 >