我想检查注册表是否与“76/2016”,“1454/2016”,“153432/2013”等模式匹配。从技术上讲,在破折号之前,可以有多达6个字符的数字组合(可以是2,可以是5,没有特定的规则),破折号后有一组四个数字(年)。 / p>
此外,可能会出现一些“丢失的空间”,例如“76/2016”或“1454/2016”,而没有特定的规则。
我正在使用re.search(pattern,string)
,但我很难编写出符合我需求的模式。有人可以帮忙吗?正如你所看到的那样,我是正则表达式的初学者......
答案 0 :(得分:1)
短划线前的可以是最多6个字符的任意数字组合
假设你的意思是:
尝试以下方法:
foo = re.compile("\s*(\d{1,6})/(\d{4})")
for text in list_of_strings:
match = foo.match(text)
if match:
num, year = map(int, match.groups())
print("Good: %d / %d" % (num, year))
else:
print("Bad: \"%s\"" % text)
答案 1 :(得分:1)
你提到你想要匹配。您可能要尝试re.match匹配对象始终为true
,如果没有匹配,则会返回None
。
import re
data = """76/2016
23376/2016
aasss
3376/2016"""
pat = re.compile(r'\d{1,6}/\d{4}')
if re.match(pat,data):
print('A match')
(Out)的
A match
答案 2 :(得分:0)
re.search(r'\d{1,6}/\d{4}', string)