[英]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.