一般的去匹配 python 的单个 regex 较简单,只需要按照 python 用户手册编写即可。
本文主要讲一下需要匹配多个 regex 的情况。
假设我们需要判断输入的每一行 (用 line
进行获取字符串)是否满足其中的一个 regex, 如果满足,则过滤。
比如,则可以使用如下的方法:
- 如果无 regex 对像,则可用:
any (regex.match(regex, line) for regex in [regex1, regex2, regex3])
- 如果有 regex 对像,即先进行了
re.compile
, 比如:
pattern = re.compile(r"(regex1)|(regex2)|(regex3)")
则可用:
pattern.match(line)
进行判断即可。
使用示例如下:
第一种:
#!/usr/bin/env python
import sys
import re
if __name__ == '__main__':
while True:
line = sys.stdin.readline()
if not line: break
# any (regex.match(regex, line) for regex in [regex1, regex2, regex3])
if any (re.match(regex, line) for regex in [".*chronos.*", ".*transcoding.*", "default"]):
print 'matched'
else:
print 'not matched'
第二种:
#!/usr/bin/env python
import sys
import re
if __name__ == '__main__':
pattern = re.compile(r"(.*chronos.*)|(.*transcoding.*)|(.*default.*)")
while True:
line = sys.stdin.readline()
if not line: break
if pattern.match(line):
print 'matched'
else:
print 'not matched'