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

正则表达式表示[]

  •  6
  • Ankit  · 技术社区  · 15 年前

    我需要找到[]的正则表达式

    它应该会回来 堆叠、标记、查找

    4 回复  |  直到 15 年前
        1
  •  40
  •   John Kugelman Michael Hodel    15 年前

    非常简单,您只需要(1)用反斜杠转义括号,以及(2)使用 (.*?)

    \[(.*?)\]
    

    括号是一个捕获组,它们捕获它们的内容供以后使用。后面的问号 .* 使匹配的非贪婪。这意味着它将匹配尽可能短的匹配,而不是最长的匹配。当一行中有多个匹配项时,贪婪和非贪婪之间的区别就会出现:

    Hi [Stack], Here is my [Tag] which i need to [Find].
       ^______________________________________________^
    

    贪婪的匹配将在两组方括号之间找到最长的字符串。这是不对的。非贪婪匹配将找到最短的:

    Hi [Stack], Here is my [Tag] which i need to [Find].
       ^_____^
    

    不管怎样,代码最终会 looking like :

    string regex = @"\[(.*?)\]";
    string text  = "Hi [Stack], Here is my [Tag] which i need to [Find].";
    
    foreach (Match match in Regex.Matches(text, regex))
    {
        Console.WriteLine("Found {0}", match.Groups[1].Value);
    }
    
        2
  •  3
  •   Femaref    15 年前
    \[([\w]+?)\]
    

    应该有用。如果还需要包含特殊字符,则可能需要更改匹配组。

        3
  •  3
  •   Bart Kiers    15 年前

    取决于您所指的环境:

    \[([^\]]+)]
    
        4
  •  0
  •   Mike    8 年前

    .NET语法,考虑多个嵌入式括号:

    \[ ( (?: \\. | (?<OPEN> \[) | (?<-OPEN> \]) | [^\]] )*? (?(OPEN)(?!)) ) \]

    这将统计打开的 [ OPEN 只有在 最后是0。

        5
  •  0
  •   user7548672 user7548672    6 年前

    我遇到了一个类似的问题,并发现这也有好处。

    \[\w{1,}\]
    

    这个 \w型 方法 元字符 . 这将匹配一个或多个单词字符。

    n{X,} 量词匹配任何可以获得不同数量的字符串。如果故意省略第二个数字,则表达式表示要匹配的1个或多个字符。

    推荐文章