如何使用正则表达式c#仅替换文本中的确切单词

本文关键字:单词 文本 替换 何使用 正则表达式 | 更新日期: 2024-09-23 00:06:52

我目前正在使用此代码来替换精确匹配。然而,这不起作用,它也删除了单词在其他单词中出现的位置。

示例:

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

这就是字符串:

乙烯基动力的orist

这是错误的,它应该只从字符串中删除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);
  }

如何使用正则表达式c#仅替换文本中的确切单词

您非常接近,regex:(?i)'bflo'b

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

如果单词的意思是"Florist"answers"Flowers",而不是"flo",请使用这个词(?i)'b[^ ]*flo[^ ]*'b

您需要弄清楚"单词"对您来说意味着什么,然后使用正则表达式定义它。

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

引用-字符类。

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

  string pattern = @"(?i)'b(flo'w+)'b";