我目前正在使用此代码替换完全匹配。然而,这不起作用,它也删除了其他单词出现的地方。
示例:
string pattern = "(?i)(flo)";
jobTitle = Regex.Replace("Florist of Vinyl Flowers of flo abc", pattern, string.Empty);
这是字符串:
vinyl owers的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);
}
答案 0 :(得分:1)
您需要弄清楚“单词”对您来说意味着什么,而不是使用正则表达式来定义它。
如果它们与“\ b”类别不匹配,则可能需要定义边界(即@“[\ t,.- $] +”“空白字符,字符串的开头/结尾,标点符号”)。如果需要,您可能需要使用@ \ w +“ - ”单词字符“类别来包含单词后面的单词的剩余部分。
参考 - Character classes。
示例taht应匹配以“flo”开头的单词:
string pattern = @"(?i)\b(flo\w+)\b";
答案 1 :(得分:1)
你是如此接近,正则表达式:(?i)\bflo\b
string pattern = @"(?i)\bflo\b";
jobTitle = Regex.Replace("Florist of Vinyl Flowers", pattern, string.Empty);
如果单词的意思是“花店”和“鲜花”而不是“花”,请使用此(?i)\b[^ ]*flo[^ ]*\b