簡體   English   中英

正則表達式取代整個單詞

[英]Regex replace whole word

我有這個字符串:

元素60:80節點1 2 3榆木55元素60 mpc 1:999 Elem 123

我想將我的字符串中的所有“Elm”“E”和“Elem”替換為“Element”。 我不想將“Node”替換為“NodElement”,所以我需要使用單詞邊界來匹配整個單詞。

為此,我正在使用這個正則表達式:

Regex regexElements = new Regex("\b(E|Elm|Elem)\b", RegexOptions.IgnoreCase);

foreach(Match m in regexElements.Matches(str))
{
     MessageBox.Show("Match: " + m.Value");
}

str = regexElements.Replace(str, "Element"); //str is my string

但我沒有看到任何替換,也沒有顯示MessageBox。 有趣的是,我仍然可以使用Notepad ++搜索來定位所需的單詞。 這里發生了什么? 謝謝

你需要生成你的正則表達式。 \\b單獨不會意味着單詞邊界(我不完全確定它是什么意思,但它不是文字b ,所以它可能類似於退格)。 所以你要么使用\\\\b要么在我的評論中使用@ like,這樣最終的代碼就變成:

Regex regexElements = new Regex(@"\b(E|Elm|Elem)\b", RegexOptions.IgnoreCase);

foreach(Match m in regexElements.Matches(str))
{
     MessageBox.Show("Match: " + m.Value);
}

str = regexElements.Replace(str, "Element"); //str is my string

要么

Regex regexElements = new Regex("\\b(E|Elm|Elem)\\b", RegexOptions.IgnoreCase);

foreach(Match m in regexElements.Matches(str))
{
     MessageBox.Show("Match: " + m.Value);
}

str = regexElements.Replace(str, "Element"); //str is my string

我還建議這個正則表達式略微更優化:

@"\bE(le?m)?\b"

沒有必要使用正則表達式:

String yourString = "Element 60:80 Node 1 2 3 Elm 55 Element 60 mpc 1:999 Elem 123" ; 

yourString = yourString.Replace("Elem", "Element").Replace("E ", "Element ").Replace("Elm", "Element"); 

暫無
暫無

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

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