如何匹配" ["和"]"在regexp?

时间:2014-07-25 12:34:04

标签: c++ regex c++11 brackets

如何匹配" ["和"]"在正则表达式? 这个不起作用:[\\[\\]] 我认为\\允许使用特殊字符。我想在课堂上匹配它们。

2 个答案:

答案 0 :(得分:4)

这取决于您的引擎,以及您是否要匹配特定括号(开启与关闭),或匹配一类括号。

  • \[匹配左括号
  • \]匹配右括号
  • [][]匹配一个开头或右边括号的字符(.NET,Perl,PCRE,Python)
  • []\[]与上述相同(Java和上面的4个引擎)
  • [[\]]与上述相同(JavaScript和上述4个引擎)
  • [\]\[]与上面相同(Ruby,所有引擎)

避免使用反斜杠汤

少数语言(如Java)要求您在正则表达式字符串中转义反斜杠,从而导致\\[和其他难看的变体。幸运的是,大多数语言都为您提供了避免转义反斜杠的方法。

  • "\["可以在JavaScript,PHP,Perl,Ruby,VB.NET,VBScript中使用
  • C#中的
  • @"\["(逐字字符串) Python中的
  • r"\["(原始字符串)
  • C ++ 11中的
  • R"(\])"R"foo(\])foo"(原始字符串文字)。原始字符串位于括号之间,可以用可选分隔符(第二个版本中的foo)包围。

<强>参考

Interesting Character Classes

答案 1 :(得分:1)

\[]应该有效。 在某些语言中,您可能需要双倍逃避。 (即\\[])。

注意:您无需转义] :)

DEMO:http://regex101.com/r/vP4mQ9/1