我不熟悉正则表达式。实际上,我刚刚开始使用它。我有三种不同的模式
pattern = re.compile(r'SETUP...\d+')
pattern = re.compile(r'PRO...\d+')
pattern = re.compile(r'INSTALL...\d+')
我的一些字符串是SETUP1234, SETUP = 1234, SETUP 1234, SETUP-1234
等。与其他字符串相同。所以,我认为前缀和数字之间的3个字符是使用它的合理方式。但我现在的问题是,我可以将它们中的三个合并到一个正则表达式中,而不是调用三个不同的findall
吗?
答案 0 :(得分:4)
您可以像这样使用|
pattern = re.compile(r'(SETUP|PRO|INSTALL)...\d+')
表示SETUP
,PRO
或INSTALL
中的任何一个。
此外,该模式可以稍微改进,如此
pattern = re.compile(r'(SETUP|PRO|INSTALL).{1,3}\d+')
这允许在单词和数字之间使用1到3个字符。
作为Tim suggested in the comments,您可以像这样使用non-capturing group
pattern = re.compile(r'(?:SETUP|PRO|INSTALL).{1,3}\d+')
print pattern.findall("SETUP 1234")
# ['SETUP 1234']
print pattern.findall("PRO 1234")
# ['PRO 1234']
print pattern.findall("INSTALL 1234")
# ['INSTALL 1234']