正则表达式在字符串中找到完全匹配

时间:2015-03-23 22:22:48

标签: regex

我是regex的新手。我正在尝试获得恰好只有0.0的行。

我想抓住这个字符串

3/6/7   56   0.0  0   0   5   0.00

但不是这个

3/6/7   56   1.0  0   0   5   0.00

我尝试了^.*0\.0正则表达式,但不幸的是,两个字符串都匹配。

4 个答案:

答案 0 :(得分:1)

你需要逃避点,因为这意味着任何角色"在RegEx中。为了仅匹配一次出现的行,您可以使用负向前看。

^.*0\.0(?!0\.0)

Looksaheads和behinds在所有RegEx环境中都不起作用,因此它可能不是一个选项。一个很好的来源是这个页面http://www.regular-expressions.info/lookaround.html

答案 1 :(得分:1)

您应该使用\b周围的0.0 word boundary元字符来指定该字词不应受其他数字或字母的限制。

/\b0\.0\b/

编辑:

如果您的语言或正则表达式不支持\b,则可以选择其他选项:

/(^| )0\.0( |$)/

这基本上要求0.0由左侧的字符串的空格或开头限定,并且右侧的字符串的空格或末尾。

答案 2 :(得分:0)

您需要使用大多数正则表达式中可用的\b字边界:

^.*\b0\.0\b.*$

请参阅example

请注意,如果您在Notepad ++中使用它,上面的正则表达式就足够了,但在某些其他应用程序中,您可能需要指定Multiline选项才能使用它。然后,您可以使用内联运算符(?m)(?m)^.*\b0\.0\b.*$

另一个注意事项:如果您只想匹配0.0与其余字符串分隔的字符串,只包含空格(或字符串边界),则可以使用this regex(?:^.* |^)0\.0(?: .*$|$)或{ {1}}如果您的引擎不支持非捕获组。

答案 3 :(得分:0)

如果您的行总是看起来像

3/6/7   56   0.0  0   0   5   0.00

你可以假设最后一个数字,前面的数字总是在那里,并且最后一个数字不应该匹配最简单的解决方案以匹配整行

/^.* 0\.0 .*$/