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

时间:2009-11-06 13:34:04

标签: regex

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

8 个答案:

答案 0 :(得分:223)

您可以在字符集的开头添加^以匹配除这些字符之外的任何内容。

[^=]*

将匹配=

以外的所有内容

答案 1 :(得分:218)

正则表达式:匹配所有

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

主播备注:在许多语言中,使用\A来定义明确的字符串开头,并使用\z(在Python中,它是\Z, JavaScript,$可以定义字符串的最后一部分。

点注:在许多版本中(但不是POSIX,TRE,TCL),.匹配任何字符,但新行字符。确保使用相应的DOTALL修饰符(PCRE / Boost / .NET / Python / Java中的/s和Ruby中的/m.来匹配任何包含换行符的字符。< / p>

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

答案 2 :(得分:183)

不是正则表达式专家,但我认为您可以从一开始就使用负面预测,例如: ^(?!foo).*$不应与以foo开头的任何内容匹配。

答案 3 :(得分:5)

在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>

答案 4 :(得分:4)

只需匹配/^index\.php/,然后拒绝匹配它。

答案 5 :(得分:0)

  

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

使用方法 Exec

    let match,
        arr = [],
        myRe = /([\s\S]+?)(?:index\.php\?id.+)/g;

    var str = 'http://regular-viragenia/index.php?id=2342343';

    while ((match = myRe.exec(str)) != null) {
         arr.push(match[1]);
    } 
    
    console.log(arr);

var myRe = /([\s\S]+?)(?:index\.php\?id=.+)/g;
var str = 'http://regular-viragenia/index.php?id=2342343';
var matches_array = myRe.exec(str);
console.log(matches_array[1]);

或其他比赛

let match,
            arr = [],
            myRe = /index.php\?id=((?:(?!index)[\s\S])*)/g;

        var str = 'http://regular-viragenia/index.php?id=2342343index.php?id=111index.php?id=222';

        while ((match = myRe.exec(str)) != null) {
             arr.push(match[1]);
        } 

        console.log(arr);

答案 6 :(得分:-3)

shell中的grep -v

!〜perl

请用其他语言添加更多内容 - 我将其标记为社区Wiki。

答案 7 :(得分:-7)

如何不使用正则表达式:

// In PHP
0 !== strpos($string, 'index.php')