【发布时间】:2016-09-12 09:19:01
【问题描述】:
我用 Python 编写了这个正则表达式,并在 regex101 上对其进行了测试,但它仍然没有按我想要的方式工作:
((^[-\/\\\(\)\s\,\&\.]+)?([0-9]+)([-\/\\\(\)\s\,\&\.])+)
我想要找到的是字符串可选地以这些符号之一开头或结尾的模式,并且中间只有数字:
-/\()& .
此列表包括短划线、正斜杠、反斜杠、括号、& 符号、空格和句点。如果字符串只包含中间的数字,并且字符串的开头和/或结尾有可选的标点符号,则搜索应该返回 true。
这个正则表达式似乎适用于大多数情况,但如果我在中间的数字中添加一个字母,则会失败。它仍然最终返回 True。我应该如何处理这个正则表达式,以便它只在有符号(可选)、所有数字、符号(可选)的情况下返回 true?
应该返回 True 的情况:
- 符号+数字即(9672
- 只有数字,即 20427304 或 8
- 数字+符号即345--
- 符号 + 数字 + 符号,即 (67-.
不应该返回 True 的情况(因为字符串中的 'y'):
(678983y733)..
【问题讨论】:
-
您肯定会错过模式末尾的
$或\Z