代码之家  ›  专栏  ›  技术社区  ›  Micah

如何将整个字符串与正则表达式匹配?

  •  62
  • Micah  · 技术社区  · 15 年前

    我需要一个regex,它只在整个字符串与我的查询匹配的地方找到匹配项。

    谢谢!

    8 回复  |  直到 15 年前
        1
  •  98
  •   Pieter van Ginkel    15 年前

    请尝试以下正则表达式:

    ^Red October$
    

    默认情况下,正则表达式区分大小写。这个 ^ 标记匹配文本的开头和 $ 结束。

        2
  •  33
  •   Tim Pietzcker    15 年前

    一般来说,使用默认设置, ^ $ 锚定是确保正则表达式与整个字符串匹配的好方法。

    不过,有几点需要注意:

    $ :

    ^foo|bar$
    

    当然不同于

    ^(?:foo|bar)$
    

    也, ^ $ 可以有不同的含义(开始/结束 而不是开始/结束 )如果设置了某些选项。在支持正则表达式的文本编辑器中,这通常是默认行为。在某些语言中,尤其是Ruby,这种行为甚至不能被关闭。

    因此,另一组锚定只能在整个字符串的开始/结束处匹配:

    \A 在字符串开头匹配。

    \Z 在字符串末尾或最后换行之前匹配。

    \z 在字符串的最末端匹配。

    但并非所有语言都支持这些锚,尤其是JavaScript。

        3
  •  17
  •   Tim Robinson    15 年前

    使用 ^ $

    Regex.Match("Red October", "^Red October$"); // pass
    Regex.Match("The Hunt for Red October", "^Red October$"); // fail
    
        4
  •  8
  •   Anton Gogolev    15 年前

    你需要把你的正则表达式放在 ^ (字符串开头)和 $

    ^Red October$
    
        5
  •  4
  •   Zixav    9 年前

    我知道现在回答这个问题可能有点晚,但也许对其他人会有用。

    最简单的方法:

    var someString = "...";
    var someRegex = "...";
    var match = Regex.Match(someString , someRegex );
    if(match.Success && match.Value.Length == someString.Length){
        //pass
    } else {
        //fail
    }
    
        6
  •  0
  •   Dean Thomas    15 年前

    对不起,这有点不清楚。

    从我读到的,你想做一个简单的字符串比较。你不需要正则表达式。

    string myTest = "Red October";
    bool isMatch = (myTest.ToLower() == "Red October".ToLower());
    Console.WriteLine(isMatch);
    isMatch = (myTest.ToLower() == "The Hunt for Red October".ToLower());
    
        7
  •  -1
  •   Vincent Roy    8 年前

    ^[^e] [e] {1}[^e] $

    推荐文章