1

我目前正在使用此代码来替换完全匹配。但是,这不起作用,它还删除了单词出现的位置。

例子:

string pattern = "(?i)(flo)";
jobTitle = Regex.Replace("Florist of Vinyl Flowers of flo abc", pattern, string.Empty);

这是制作字符串:

乙烯基花朵的理论家

这是错误的,它应该只从字符串中删除 flo,如果我使用:

string pattern = "(?i)\b(flo)\b";

它不匹配但是即使那里有一个完整的单词它也不会匹配,没有匹配/

更新 :

完整的代码运行如下:

splitter = wordToremoveTitle.Split('|');
if (splitter.Length > 0)
 {

  for (int t = 0; t < splitter.Length ; t++)
  {
  String pattern = @"(?i)\b(" + splitter[t] + ")\b";
  jobTitle = Regex.Replace(jobTitle, pattern, string.Empty);
  }
4

2 回答 2

1

你是如此接近,正则表达式:(?i)\bflo\b

string pattern = @"(?i)\bflo\b";
jobTitle = Regex.Replace("Florist of Vinyl Flowers", pattern, string.Empty);

如果这个词的意思是“花店”和“鲜花”而不是“弗洛”,请使用这个(?i)\b[^ ]*flo[^ ]*\b

于 2012-08-03T21:07:29.967 回答
1

您需要弄清楚“单词”对您意味着什么,而不是使用正则表达式来定义它。

如果边界与“\b”类别不匹配(即@“[\s,.-$]+”“空白字符、字符串开头/结尾、标点符号”),您可能需要定义边界。如果需要,您可能需要使用 @\w+" - "单词字符" 类别在前缀之后包含单词的剩余部分。

参考字符类

示例 taht 应匹配以“flo”开头的单词:

  string pattern = @"(?i)\b(flo\w+)\b";
于 2012-08-03T21:07:15.007 回答