使用正则表达式查找单词

时间:2014-03-18 16:23:55

标签: c# regex vb.net

在包含数字值的字符串中:

  

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!

1 个答案:

答案 0 :(得分:1)

您可以使用否定前瞻:

6\.1(?![.\d])

(?!...)表示"未跟随"并且只是支票,而不是匹配结果的一部分。

注意:\b仅相对于\w字符类,因为.不在此类中,1之间存在单词边界和.2

中的6.1.2

您可以添加一个lookbehind以确保您的号码前面有空格或字符串的开头,例如:

(?<=^|\s)6\.1(?![.\d])

或不带数字或点:

(?<![.\d])6\.1(?![.\d])