[英]Regular Expression with letter
我需要匹配格式化657432-76、54678-01、54364 A -12的內容
我得到了(r'^\\d{6}-\\d{2}$')
和(r'^\\d{5}-\\d{2}$')
但是您怎么得到這封信呢?
謝謝!!
如果您希望單個正則表達式匹配第三個模式,則可以使用如下正則表達式:
(?i)(r'^\d{5}[a-z]-\d{2}$')
但是,如果您想為所有它們使用一個正則表達式,則可能會發現有用的:
(?i)(r'^\d{5-6}[a-z]?-\d{2}$')
請記住,這將允許: 657432A-76
但是如果您只希望字母帶有5位數字,則可以使用:
(?i)(r'^\d{5}(?:\d?|[a-z])-\d{2}$')
對於字母,請使用[a-zA-Z]
,如果僅是大寫字母,則[AZ]
就足夠了。
似乎模式通常是6個字符,最后一個字符最多有可能的字母或數字-
然后是2個數字? 所以你會用這個模式
pattern = r'^d{5}.+-\\d{2}$'
這個表達式怎么樣:
>>> 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'>
這是與您所有樣本匹配的可能候選者:
import re
samples = [
"657432-76",
"54678-01",
"54364A-12"
]
for s in samples:
print re.match(r'^(\d+[A-Z]?)-(\d+)$', s).groups()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.