我是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
正则表达式,但不幸的是,两个字符串都匹配。
答案 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 .*$/