簡體   English   中英

如果目標單詞不是另一個單詞的一部分,則使用正則表達式替換單詞

[英]Word replacement using regex if the target word is not a part of another word

我正在研究正則表達式,如果一個單詞是獨立單詞而不是另一個單詞的一部分,則要替換該單詞。 例如,單詞“事物”。 如果是something ,則應該在此忽略子字符串“ thing”,但是如果單詞“ thing”前面帶有特殊字符(例如點或方括號),則希望將其捕獲。 另外,如果要在其后面有方括號,點或逗號(或其他任何非字母數字字符),我也希望捕獲該單詞。

在字符串中

東西是thing ,還有一啄和( thingthing

在上面的句子中,我突出顯示了要標記為替換的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 ,還有一啄和( thingthing

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM