在反斜杠后出现字符时,正则表达式将不匹配单词。

时间:2013-12-03 20:45:43

标签: .net regex

我正在尝试使用正则表达式匹配格式domain \ t0xxx的域用户名。我已经得到它匹配“域”。每当我尝试匹配反斜杠之外的任何内容时,匹配失败。

例如:

string pattern = @"\bdomain\\\b"
比较

将返回true

   var s = @"domain\t0123";    
   var result = System.Text.RegularExpressions.Regex.Match(s, pattern).Success;

但是当我添加t并尝试以相同的方式匹配时,结果为false。

string pattern = @"\domain\\t\b";

为什么会这样?它现在试图逃避t?如果是这样,我怎么告诉它不要这样做?我试过在//和t周围加上方括号[],但这不起作用。

2 个答案:

答案 0 :(得分:2)

在你展示的正则表达式中,我看到了2个问题:

\domain\\t\b
 ^         ^

你遗漏了b中的\b,所以它试图在开始时匹配\d(一个数字)。

最终\b也无法匹配,因为t之后没有字边界。一旦完成正则表达式并想要匹配最终位置,请将其添加回来。

\bdomain\\t最多可与t匹配。

答案 1 :(得分:0)

如果您尝试只匹配“domain \ t0xxx”之类的字符串,如果用xxx表示数字,这将对您有用。你需要通过加倍反复来逃避反斜杠:

string pattern = @"domain\\t0\d{3}";

如果字符串应仅包含上述字符串,则应使用开始和结束标记

string pattern = @"^domain\\t0\d{3}$";