【问题标题】:Python2.7 re fullmatch alternatives [duplicate]Python2.7重新完全匹配替代品[重复]
【发布时间】:2017-04-12 20:41:11
【问题描述】:

有没有办法在 python3.4 之前匹配一个完整的字符串(因为他们在这里引入了 fullmatch() 方法。) 例如。如果我有一个字符串 '12.345' 并且如果我想检查没有指数的浮点数并且我使用模式:r'-?(?:\d+())?(?:\.\d+())?'。但这种模式也适用于“12.345abc”。 我怎样才能使 re 不匹配第二个字符串'12.345abc'? 谢谢!

【问题讨论】:

  • Anchors 是你的朋友:r'^-?(?:\d+())?(?:\.\d+())?$'
  • 谢谢!作品。并且已经回答了:)

标签: regex python-2.7 match


【解决方案1】:

您可能希望将锚点与filter()lambda() 结合使用:

import re

strings = ['12.345', '12.345abc']

rx = re.compile(r'^\d+(\.\d+)?$')

numbers = list(filter(lambda x: rx.match(x), strings))
print(numbers)
# ['12.345']

这样可以确保事后没有垃圾匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2013-05-31
    相关资源
    最近更新 更多