带符号和空格的ASP.Net正则表达式

带符号和空格的ASP.Net正则表达式,asp.net,regex,Asp.net,Regex,我使用以下正则表达式查找文档中的单词和短语。(必须使用正则表达式,并且必须使用\b) 当我尝试在以下字符串中查找匹配项时 going to the zoo with a & b a&b不匹配。但是,如果我从字符串和正则表达式中删除前导空格和后接空格,使a和b都匹配,但我确实需要这些空格。将\s用于空格 string strRegex = @"\b\s(zoo|a\s&\sb|dummy)\b"; Regex myRegex = new Regex(strRegex, Regex

我使用以下正则表达式查找文档中的单词和短语。(必须使用正则表达式,并且必须使用
\b

当我尝试在以下字符串中查找匹配项时

going to the zoo with a & b
a&b
不匹配。但是,如果我从字符串和正则表达式中删除前导空格和后接空格,使
a和b都匹配,但我确实需要这些空格。

将\s用于空格

string strRegex = @"\b\s(zoo|a\s&\sb|dummy)\b";
Regex myRegex = new Regex(strRegex, RegexOptions.None);
string strTargetString = @"going to the zoo with a & b";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
    Console.WriteLine(myMatch); 
}

你的正则表达式。你的意思是
\b a&b\b
匹配
a&b
\b a&b\b
不匹配?不匹配。\b a&b\b匹配a&b但\b a&b\b与a&b不匹配。这里不匹配。你需要添加全局标志
g
来查找多个匹配项,而不是在第一个位置停止:
/\b(zoo&b\a&b\124; dummy b/g
,你看,这是个好办法。你为什么不加上这个作为回答呢?
string strRegex = @"\b\s(zoo|a\s&\sb|dummy)\b";
Regex myRegex = new Regex(strRegex, RegexOptions.None);
string strTargetString = @"going to the zoo with a & b";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
    Console.WriteLine(myMatch); 
}