I have a following problem with my regular expression, I would like it to match caterpillar in the string "This is a caterpillar s tooth" but it matches cat. How can I change it?
        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);
        }
                You need a regex of the form \b(abc|def)\b.\b is a word separator.
Also, you need to call Regex.Escape on each word.
For example:
new Regex(@"\b(" + string.Join("|", women.Select(Regex.Escape).ToArray()) + @"\b)");
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With