[英]Word replacement using regex if the target word is not a part of another word
我正在研究正則表達式,如果一個單詞是獨立單詞而不是另一個單詞的一部分,則要替換該單詞。 例如,單詞“事物”。 如果是something
,則應該在此忽略子字符串“ thing”,但是如果單詞“ thing”前面帶有特殊字符(例如點或方括號),則希望將其捕獲。 另外,如果要在其后面有方括號,點或逗號(或其他任何非字母數字字符),我也希望捕獲該單詞。
在字符串中
東西是
thing
,還有一啄和(thing
多thing
在上面的句子中,我突出顯示了要標記為替換的3個單詞。 我使用了以下正則表達式
\bthing\b
我在regex101.com上嘗試了上述句子,並使用此regex表達式僅突出顯示了第一個單詞。 我知道我的正則表達式不會捕獲(thing
但是我認為它將捕獲句子中的最后一個單詞,這樣至少會出現兩次。
有人可以幫我修改我的regex表達式以捕獲上面句子中的所有3種情況嗎?
您可能使用了javascript正則表達式,該表達式會在找到第一個匹配項后返回。 如果在regex101.com的第二個框中添加修飾符g
,它將找到所有匹配項。
該站點更適合C#正則表達式測試: http : //derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
如果使用C#編寫此代碼並使用“匹配”方法,則它應該多次匹配。
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);
}
字母數字[0-9A-Za-z]
簡寫為[^\\W_]
使用先行查找和先行查找
(?<![^\\W_])thing(?![^\\W_])
展開式
(?<! [^\W_] ) # Not alphanum behind
thing # 'thing'
(?! [^\W_] ) # Not alphanum ahedad
匹配突出顯示的文本
東西是thing
,還有一啄和( thing
多thing
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.