正则表达式 - 可能的字符匹配集

时间:2013-06-21 15:43:06

标签: python regex

我需要为一组可能的字符匹配测试正则表达式

字段'TEST'可以采用这些可能的值 - 'TEST1','TEST2','TEST3'......'TEST10'

import re
pattern = 'TEST[0123456789]
field = 'TEST1'

match = re.search(match,field)

如何在模式匹配中指定[10]的值?

2 个答案:

答案 0 :(得分:7)

10是一个2个字符的字符串:

r'TEST\d{1,2}'

会匹配一个或两个数字; \d匹配0到9范围内的任何字符;它是[0123456789]的简写等价物。

或者,使用两种选择:

r'TEST(?:\d|10)'

允许 1 数字,允许10。请注意,它仍会与TEST11匹配,因为该字符串TEST1开始。如果要阻止匹配静止,请添加边界测试:

r'TEST(?:\d|10)\b'

最后一个模式的演示:

>>> re.search(r'TEST(?:\d|10)\b', 'TEST0').group()
'TEST0'
>>> re.search(r'TEST(?:\d|10)\b', 'TEST8').group()
'TEST8'
>>> re.search(r'TEST(?:\d|10)\b', 'TEST10').group()
'TEST10'
>>> re.search(r'TEST(?:\d|10)\b', 'TEST11') is None
True

答案 1 :(得分:1)

TEST(?:[1-9]|10)\b

这修复了其他答案在这里没有的几个场景。

行动中:http://www.rubular.com/r/0if2CHfa6l