这里有一些像
这样的词'X201i'
'B-442N-5'
'00.55005.001'
...
我想写一个python脚本从给定的单词中学习模式。 固定长度,相同位置的相同特殊字符,相同位置的相同类型(数字或字母)。
所以我可以找到像
这样的类似字符串'B304D' => 'letter|number|number|number|letter'
'e-472N-5' =>'letter|-|number|number|number|letter|-|number'
任何建议或提示?
答案 0 :(得分:1)
您需要定义两种单独的模式以匹配这两种格式。
>>> import re
>>> s = ['X201i',
'B-442N-5',
'00.55005.001']
>>> [i for i in s if re.match(r'^(?:[A-Za-z]\d{3}[A-Za-z]|[A-Za-z]-\d{3}[A-Za-z]-\d)$', i)]
['X201i', 'B-442N-5']
示例:强>
[A-Za-z]
\d
匹配一个字母, HttpContext.Current.Session["Id"] = obj.USER_MOD_ID;
HttpContext.Current.Session["Group"] = obj.GROUP_MOD_ID;
HttpContext.Current.Session["Region"] = obj.REGION_ID;
匹配一个数字。
答案 1 :(得分:0)
您可以将单词转换为正则表达式,然后使用:
>>> import re
>>> words = 'X201i', 'B-442N-5', '00.55005.001'
>>> for word in words:
pattern = ''.join([re.escape(c), '\d', '[A-Za-z]'][c.isdigit() - c.isalpha()]
for c in word) + '$'
print pattern, 'matches', ', '.join(filter(re.compile(pattern).match, words))
[A-Za-z]\d\d\d[A-Za-z]$ matches X201i
[A-Za-z]\-\d\d\d[A-Za-z]\-\d$ matches B-442N-5
\d\d\.\d\d\d\d\d\.\d\d\d$ matches 00.55005.001