用于匹配包含点的整个单词的正则表达式

时间:2011-01-18 08:39:04

标签: .net regex

在下面的句子中:

我在下午5点醒来。今天

我想匹配 5 p.m。。 这种模式有效:

5 p\.m\.

但我希望它只匹配整个单词(因此5 p.m.us将不匹配)。 所以我使用了这种模式:

\b5 p\.m\.\b

但由于这个点,这不起作用。

解决这个问题最简单的正则表达式是什么?我可以定义一个零宽度匹配(\ b样式),它不关心字符是否是单词字符,只要它是空格或字符串的结尾\开头?

2 个答案:

答案 0 :(得分:5)

你可以使用正向前瞻和后观,这是零宽度匹配。像(?<=^|\s)5 p\.m\.(?=\s|$)这样的正则表达式意味着“字符串的开头或空格字符,然后是'下午5点'。后跟任何空格字符或字符串结尾。“

答案 1 :(得分:4)

嗯,对于那个具体的例子,一个简单的例子是:

\b5 p\.m\.\B

但我怀疑在更复杂的源文本中这会很好用。

word boundaries上的这篇文章可能会有所帮助。