在包含数字值的字符串中:
6.1,6.1.1,6.1.2。
我想查找(并替换)整个单词"6.1"
并忽略以"6.1"
开头的其他单词。我尝试在我的reg表达式中使用\b
:
Dim OrginalString as String = "Sample text with numeric values starting with 6.1 followed by 6.1.1, 6.1.2 "
Dim wordToFind as String = "6.1"
Dim pattern As String = [String].Format("\b({0})\b", wordToFind)
Dim ret As String = Regex.Replace(OrginalString, pattern, "1234",RegexOptions.IgnoreCase)
但它取代了所有数字"字"以"6.1"
开头。结果如下:
ret = "Sample text with numeric values starting with 1234 followed by 1234.1, 1234.2 "
VB或C#中的解决方案对我来说没问题。
有效。 :)谢谢Casimir et Hippolyte!
答案 0 :(得分:1)
您可以使用否定前瞻:
6\.1(?![.\d])
(?!...)
表示"未跟随"并且只是支票,而不是匹配结果的一部分。
注意:\b
仅相对于\w
字符类,因为.
不在此类中,1
之间存在单词边界和.2
6.1.2
您可以添加一个lookbehind以确保您的号码前面有空格或字符串的开头,例如:
(?<=^|\s)6\.1(?![.\d])
或不带数字或点:
(?<![.\d])6\.1(?![.\d])