我正在使用正则表达式来查找由连字符分隔的 8 位数字表示的任何和所有模式,如下所示:
(\d{8}\-\d{8}\)
我把它放在 rubular.com(在线正则表达式编辑器)上,它似乎工作正常。但是,当我在我的 Python 代码中使用它时,出现错误:SyntaxError: EOL while scanning string literal。我试着去掉结尾的反斜杠。但是,虽然错误似乎已经消失,但正则表达式没有找到模式。我有一个字符串,其中嵌入了以下模式:
output = "... 57867983 - 87995423 ...."
我正在使用以下代码:
include re
regex = re.compile(r"\d{8}\-\d{8}\")
re.search(regex, outuput)
正则表达式不返回输出字符串中的模式。有人可以告诉我我做错了什么吗?谢谢!
这是我要匹配的实际字符串,因为它出现在返回的字符串中:
Hash\r\n\t\t01773857 - 90349912\r\n\tWork with
我是否需要考虑 8 位数字和我要匹配的连字符之前的任何字母数字字符?
最佳答案
你的最后一个 "
被 \
转义了
你想要:
regex = re.compile(r"\d{8}\-\d{8}")
编辑 - 根据您更新的问题,您似乎需要在破折号之前考虑空格:
regex = re.compile(r"\d{8}\s*\-\s*\d{8}")
关于python - 在 Python 中正确使用 regexp 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15622807/