我正在尝试使用正则表达式匹配格式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周围加上方括号[],但这不起作用。
答案 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}$";