在正则表达式中,“\?”是什么意思?

时间:2014-08-21 13:51:55

标签: c# regex

我可以知道\?在正则表达式中的含义吗?例如,它在这个表达式中的意义是什么。

我用它来验证7位数电话号

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

“\?”意思是“?”本身。 “\” - 是逃脱角色。 “?”是量词的,“\”用来逃避它。

答案 1 :(得分:2)

  

我用它来验证7位数电话号

"[[:number:]]\{3\}[ -]\?[[:number:]]\{4\}"

看看你的例子,似乎你在谈论 BRE ,然后\(转义)给了?特殊含义:one or zero[ -]

如果 ERE / PCRE ,则\将使该特定含义远离?,即\?表示文字问号:{ {1}}

答案 2 :(得分:0)

正确逃脱的“?”将匹配文本中显示的确切字符“?”。 例如,如果你这样做

Regex re = new Regex(@"\d{3}-\?\d{4}");

,你将能够获得123-?1234的积极匹配。 如果您想获得1231234 OR 123-1234的正面匹配,可以使用特殊字符“?”没有逃脱,像这样:

Regex re = new Regex(@"\d{3}-?\d{4}");

P.S。对于C#.NET,我发现在线最好的正则表达式测试地点是MyRegexTester。如果您将它用于C#,请不要忘记选中相应的“C#.NET”复选框。

P.P.S。根据评论,将“\ s *”放入正则表达式将匹配任何长度的空格(包括空格和制表符),“\?”将匹配一个可选空格,“[]”将恰好匹配一个空格(不能少)。

答案 3 :(得分:0)

" \"逃避"?"在正则表达式中有特殊含义(0或1匹配)所以" \?"逃避它并识别文字"?"

你的正则表达式对我来说很奇怪,它看起来所有特殊字符都被转义(也是#34; {")并且看起来并不是我所知道的有效。 我想你想写

"\d{3}[ -]?\d{4}"

如果你想匹配尊重模式或

的东西
"^\d{3}[ -]?\d{4}$"

如果你想要匹配的东西恰好是模式