我有以下字符串 - " ct lungs,mediastinum"。现在我想做一个Regex.Replace
这样的单词以字母" media"开头。在表达式中转换为"胸部"。
因此,以下字符串应转换为" ct chest no contrast" -
我写了
Regex.Replace(myString,@"\bmedia.*\b"," chest ")
但这是在"媒体"之后的所有事情。和"媒体"包含并将其更改为" chest"。所以,如果我在给定的例子中使用上面的话,那么单词" no contrast"迷路了。我该怎么做只能替换以" media"开头的单词。到"胸部"然后将字符串中的所有内容保留原样?
非常感谢!
答案 0 :(得分:2)
.*
是贪婪的,这意味着它会尝试尽可能多地匹配匹配。您可以使用.*?
代替尽可能少的匹配。
Regex.Replace(myString,@"\bmedia.*?\b"," chest ")
答案 1 :(得分:1)
string text = Regex.Replace( inputString, @"media\w*", "chest" , RegexOptions.None );
这意味着用胸部替换任何单词字符的媒体+ 0或更多匹配。
您可能想要使用:
\bmedia\w*
\ b表示单词边界,因此只有在单词以media
开头时才会这样做答案 2 :(得分:1)
在正则表达式中,\S*
表示非空白字符为零或更多次。所以试试这个:
Regex.Replace(myString,@"\bmedia\S*"," chest ")
^^
如果您只想使用字母,可以将\S*
切换为[a-zA-Z]*
。
答案 3 :(得分:1)
使用*
跟踪?
量词,使其非贪婪。这意味着它将停止在它找到的第一个单词边界消费,而不是最后一个(字符串的结尾)。
答案 4 :(得分:1)
没有正则表达式,也许是这样的?
Dim tempList = myString.Split(" ").ToList()
tempList.Where(s => s == "media").ToList().ForEach(i => i = "chest")
Dim myString = String.Join(" ", tempList)