Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式-检查;123456/2016“;图案_Python_Regex - Fatal编程技术网

Python正则表达式-检查;123456/2016“;图案

Python正则表达式-检查;123456/2016“;图案,python,regex,Python,Regex,我想检查注册表是否匹配“76/2016”、“1454/2016”、“153432/2013”等模式。从技术上讲,破折号前可以有最多6个字符的数字组合(可以是2个,也可以是5个,没有具体的规则),破折号后有一组4个数字(年份) 此外,可能会出现一些“丢失的空间”,如“76/2016”或“1454/2016”,但没有具体规则 我正在使用re.search(pattern,string)来实现这一点,但我很难编写出符合我需要的模式。有人能帮忙吗?正如你所看到的,我是regex的乞丐 re.search

我想检查注册表是否匹配“76/2016”、“1454/2016”、“153432/2013”等模式。从技术上讲,破折号前可以有最多6个字符的数字组合(可以是2个,也可以是5个,没有具体的规则),破折号后有一组4个数字(年份)

此外,可能会出现一些“丢失的空间”,如“76/2016”或“1454/2016”,但没有具体规则

我正在使用
re.search(pattern,string)
来实现这一点,但我很难编写出符合我需要的模式。有人能帮忙吗?正如你所看到的,我是regex的乞丐

re.search(r'\d{1,6}/\d{4}', string)
在破折号之前,最多可以有6个字符的数字组合

  • 您的示例甚至没有破折号,但有斜杠“/”
  • 您只显示数字,但您会说“最多6个字符”
假设你的意思是:

  • 零个或多个空格
  • 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)

你提到你想要匹配。您可能希望尝试匹配对象始终为
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')
(外)


你说你有一套密码。是否要检查每个代码是否与模式匹配?最终的结果应该是什么?请举一些例子对破折号表示歉意,删掉混乱
A match