如果目标单词不是另一个单词的一部分,则使用正则表达式替换单词
本文关键字:单词 替换 正则表达式 单词不 目标 另一个 如果 一部分 | 更新日期: 2023-09-27 18:37:11
我正在研究一个单词的正则表达式,如果它是一个独立的单词而不是另一个单词的一部分,则要替换它。例如"事物"一词。如果是something
,子字符串"thing"应该在那里被忽略,但如果单词"thing"前面有一个特殊字符,如点或括号,我希望它被捕获。此外,如果后面有括号、点或逗号(或任何其他非字母数字字符),我希望捕获该单词。
在字符串中
有些东西是
thing
,还有一个更thing
和更thing
的东西
在上面的句子中,我突出显示了要标记为替换的 3 个单词。 我使用了以下正则表达式
'bthing'b
我在 regex101.com 上尝试了上面的句子,并且使用此正则表达式仅突出显示了第一个单词。我知道我的正则表达式不会捕获(thing
但我认为它会捕获句子中的最后一个单词,以便至少出现 2 次。
有人可以帮我修改我的正则表达式以捕获上面句子中的所有 3 个出现吗?
您可能使用的是 javascript 正则表达式,它在找到第一个匹配项后返回。 如果在 regex101.com 的第二个框中添加修饰符g
,它将找到所有匹配项。
此站点更适合 C# 正则表达式测试:http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
如果在 C# 中对此进行编码并使用"Matches"方法,则它应该匹配多次。
Regex regex = new Regex("''bthing''b");
foreach (Match match in regex.Matches(
"Something is a thing, and one more thingy and (thing and more thing"))
{
Console.WriteLine(match.Value);
}
alphanum [0-9A-Za-z]
的简写是[^'W_]
使用回顾和展望你会得到
(?<![^'W_])thing(?![^'W_])
扩大
(?<! [^'W_] ) # Not alphanum behind
thing # 'thing'
(?! [^'W_] ) # Not alphanum ahedad
匹配突出显示的文本
有些东西是thing
,还有一个东西和(thing
和更thing