我需要一个正则表达式来查找句子是否包含单词。如果单词有前缀或后缀,则该单词有效但对某些特定字符有效,例如,。* + - etc下面是一些例子。我正在搜索进程字,对于有效句子,我将它们变为粗体
答案 0 :(得分:3)
使用单词边界类(\b
):
\bprocess\b
在不区分大小写的正则表达式匹配中,应该给出正确的结果:
string[] strings = new string[] {
@"processes",
@"process",
@"Processing",
@"process-specific",
@"processed",
@"processor",
@"procession",
@"Inter-process",
@"uniprocessor",
@"multiprocessing",
@"process's",
@"""process""",
@"process10"
};
foreach (string s in strings)
{
if (Regex.IsMatch(s, @"\bprocess\b", RegexOptions.IgnoreCase))
Console.ForegroundColor = ConsoleColor.Green;
else
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(s);
}
如果允许使用尾随数字,请执行以下操作:
\bprocess(?:\b|\d+)
答案 1 :(得分:-1)
由于您的所有表达式都包含:rocess
只需使用IndexOf滚动您自己的表达式,您将获得比使用Regex
更好的性能和更多的分配控制权。这个简单的任务。