用于包含具有特定字符的单词的正则表达式

时间:2016-07-11 11:34:52

标签: c# regex

我需要一个正则表达式来查找句子是否包含单词。如果单词有前缀或后缀,则该单词有效但对某些特定字符有效,例如,。* + - etc下面是一些例子。我正在搜索进程字,对于有效句子,我将它们变为粗体

  1. 进程
  2. 过程
  3. 处理
  4. 过程特异性
  5. 处理
  6. 处理器
  7. 游行
  8. 进程间
  9. 单处理器
  10. 过程的
  11. “进程”
  12. process10

2 个答案:

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

enter image description here

如果允许使用尾随数字,请执行以下操作:

\bprocess(?:\b|\d+)

enter image description here

答案 1 :(得分:-1)

由于您的所有表达式都包含:rocess只需使用IndexOf滚动您自己的表达式,您将获得比使用Regex更好的性能和更多的分配控制权。这个简单的任务。

See also Automata