Regex.Match palabras completas

En C# , quiero usar una expresión regular para que coincida con cualquiera de estas palabras:

 string keywords = "(shoes|shirt|pants)"; 

Quiero encontrar todas las palabras en la cadena de contenido. Pensé que esta regex haría eso:

 if (Regex.Match(content, keywords + "\\s+", RegexOptions.Singleline | RegexOptions.IgnoreCase).Success) { //matched } 

pero vuelve verdadero para palabras como participants , aunque solo quiero la palabra pants enteros.

¿Cómo hago coincidir solo esas palabras literales?

Debe agregar el delimitador de palabras a su expresión regular:

 \b(shoes|shirt|pants)\b 

En codigo:

 Regex.Match(content, @"\b(shoes|shirt|pants)\b"); 

Tratar

 Regex.Match(content, @"\b" + keywords + @"\b", RegexOptions.Singleline | RegexOptions.IgnoreCase) 

\b coincide con los límites de las palabras. Mira aquí para más detalles.

Necesita una aserción de ancho cero en cualquier lado para que los caracteres antes o después de la palabra no sean parte de la palabra:

 (?=(\W|^))(shoes|shirt|pants)(?!(\W|$)) 

Como otros sugirieron, creo que \ b funcionará en lugar de (? = (\ W | ^)) y (?! (\ W | $)) incluso cuando la palabra esté al principio o al final de la cadena de entrada, pero ‘No estoy seguro.

pon un límite de palabras en él usando la metasecuencia \ b.