C#正则表达式匹配列表中的单词

C#正则表达式匹配列表中的单词,c#,regex,C#,Regex,我的正则表达式有以下问题,我希望它与字符串“This is a caterpillar s tooth”中的caterpillar匹配,但它与cat匹配。我怎样才能改变它 List<string> women = new List<string>() { "cat","caterpillar","tooth" }; Regex rgx = new Regex(string.Join(

我的正则表达式有以下问题,我希望它与字符串“This is a caterpillar s tooth”中的caterpillar匹配,但它与cat匹配。我怎样才能改变它

        List<string> women = new List<string>()
        {
            "cat","caterpillar","tooth"
        };

        Regex rgx = new Regex(string.Join("|",women.ToArray()));


        MatchCollection mCol = rgx.Matches("This is a caterpillar s tooth");
        foreach (Match m in mCol)
        {
            //Displays 'cat' and 'tooth' - instead of 'caterpillar' and 'tooth'
            Console.WriteLine(m);
        }
List women=新列表()
{
“猫”、“毛虫”、“牙齿”
};
Regex rgx=new Regex(string.Join(“|”),women.ToArray();
MatchCollection mCol=rgx.Matches(“这是caterpillar的齿”);
foreach(在mCol中匹配m)
{
//显示“cat”和“TO齿”-而不是“caterpillar”和“TO齿”
控制台写入线(m);
}

您需要一个格式为
\b(abc | def)\b
的正则表达式
\b
是一个单词分隔符

另外,您需要对每个单词调用
Regex.Escape

例如:

new Regex(@"\b(" + string.Join("|", women.Select(Regex.Escape).ToArray()) + @"\b)");

谢谢,但是为什么我需要
Regex.Escape
它只在
\b
s中工作呢?@user:如果你的一个字符串包含一个“`”,那该怎么办呢?它应该是
\b(abc | def)\b
还是
\b(abc | def\b)
-你的C#示例给出的结果与第一行中的示例不同。