我需要匹配那些格式化的东西 657432-76,54678-01,54364 A -12
我得到(r'^\d{6}-\d{2}$')
和(r'^\d{5}-\d{2}$')
但你怎么收到这封信?
谢谢!
答案 0 :(得分:0)
如果你想要一个正则表达式匹配第三个模式,你可以使用这样的正则表达式:
(?i)(r'^\d{5}[a-z]-\d{2}$')
<强> Working demo 强>
但是,如果你想为所有这些都使用一个正则表达式,你可能会觉得很有用:
(?i)(r'^\d{5-6}[a-z]?-\d{2}$')
请注意,这将允许:657432A-76
但如果您只想要5位数字,那么您可以使用:
(?i)(r'^\d{5}(?:\d?|[a-z])-\d{2}$')
答案 1 :(得分:0)
对于使用[a-zA-Z]
的字母,如果它只是大写,那么[A-Z]
就足够了。
答案 2 :(得分:0)
看起来这个模式通常是6个字符,最后一个char max可能是字母或数字,然后-
然后是2个数字?所以你要使用这个模式
pattern = r'^d{5}.+-\d{2}$'
答案 3 :(得分:0)
这个表达怎么样:
>>> re.search(r'^\d+[A-Z]?-\d+$','657432A-76')
<_sre.SRE_Match object; span=(0, 10), match='657432A-76'>
>>>
>>> re.search(r'^\d+[A-Z]?-\d+$','657432-76')
<_sre.SRE_Match object; span=(0, 9), match='657432-76'>
>>>
>>> re.search(r'^\d+[A-Z]?-\d+$','65743-76')
<_sre.SRE_Match object; span=(0, 8), match='65743-76'>
>>>
或者格式如下:
[At most six digits][Possibility of a letter][-][At most two digits]
然后:
>>> re.search(r'^\d{,6}[A-Z]?-\d{,2}$','65743A-76')
<_sre.SRE_Match object; span=(0, 9), match='65743A-76'>
>>>
>>> re.search(r'^\d{,6}[A-Z]?-\d{,2}$','657436-76')
<_sre.SRE_Match object; span=(0, 9), match='657436-76'>
答案 4 :(得分:0)
这里有一个匹配所有样本的可能候选人:
import re
samples = [
"657432-76",
"54678-01",
"54364A-12"
]
for s in samples:
print re.match(r'^(\d+[A-Z]?)-(\d+)$', s).groups()