Python正则表达式,如何搜索多个字符串?

时间:2015-05-20 17:31:21

标签: python regex

我是python的新手,我正在试图找出python正则表达式来查找匹配的任何字符串 - 。例如,'type1-001''type2-001'应匹配,但'type3-asdf001'不应匹配。我希望能够与[type1|type2|type3]-\d+这样的正则表达式匹配,以查找以type1type2type3开头的任何字符串,然后附加{{1}和数字。此外,知道如何搜索附加“ - ”和数字的任何大写文本会很酷。

这是我认为应该起作用的,但我似乎无法做到正确......

'-'

4 个答案:

答案 0 :(得分:1)

如果您只想在&#34之后输入数字,请输入"要变量,那么你应该只把它们放在方括号中,如下所示:

re.compile(r'type[1|2]-\d+')

答案 1 :(得分:1)

[]将匹配括号之间出现的任何字符集。要对正则表达式进行分组,您需要使用()。所以,我认为你的正则表达应该是这样的:

pref_num = re.compile(r'(type1|type2)-\d+')

至于如何搜索附加-和数字的任何大写文字,我建议:

[A-Z]+-\d+

答案 2 :(得分:0)

您可以使用模式

'type[1-3]-[0-9]{3}'

演示

>>> import re
>>> p = 'type[1-3]-[0-9]{3}'
>>> s = 'type2-005 with some text type1-101 and then type1-asdf001'
>>> re.findall(p, s)
['type2-005', 'type1-101']

答案 3 :(得分:0)

pref_num = re.compile(r'(type1|type2|type3)-\d+')

m = pref_num.search('type1-000')
if m != None: print(m.string)

m = pref_num.search('type2-000')
if m != None: print(m.string)

m = pref_num.search('type3-abc000')
if m != None: print(m.string)