簡體   English   中英

C#Regex匹配列表中的單詞

[英]C# Regex to match words from list

我有我的正則表達式如下問題,我想它匹配字符串中的毛毛蟲 “這是毛毛蟲的牙齒”,但它相匹配的貓 我該怎么改變它?

        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);
        }

你需要一個形式為\\b(abc|def)\\b的正則表達式。
\\b是一個單詞分隔符。

此外,您需要在每個單詞上調用Regex.Escape

例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM