匹配 3.14529
匹配 -255.34
匹配 128
匹配 1.9e10
匹配 123,340.00
Skip 720p
为了跳过最后一个,我尝试了这个正则表达式:
([\d\.e\-,])
标准是:如果字符串中的每个字符都是数字(\ d)或点(。)或指数(e)或负数( - )或逗号(,),则匹配字符串,如果任何其他字符都会跳过整个字符串。
问题是最后一个有一个" p"在它,它必须被忽略。但是,由于它前面的数字(720),它也包含在匹配中。
答案 0 :(得分:3)
尝试使用^和$来匹配整个字符串:
^[\d\.e\-,]+$
^
匹配字符串的开头,$
结束。
答案 1 :(得分:3)
您必须利用主播^
和$
,但是如果您使用:
^[\d\.e\-,]+$
...这将允许匹配:
.e.e.e---,,
1,.2,2e.eee
.....
---
etc...
我可以拿出这个正则表达式:
^-?\d{1,3}(,\d{3})*\.?\d*(e\d*)?$
<强> Working demo 强>
您可以使用以下代码:
import re
p = re.compile(ur'^-?\d{1,3}(,\d{3})*\.?\d*(e\d*)?$', re.MULTILINE)
test_str = u"Match\n3.14529\n-255.34\n128\n1.9e10\n123,340.00\n\nSkip \n720p"
re.findall(p, test_str)