python regex 使用示例

一般的去匹配 python 的单个 regex 较简单,只需要按照 python 用户手册编写即可。

本文主要讲一下需要匹配多个 regex 的情况。

假设我们需要判断输入的每一行 (用 line 进行获取字符串)是否满足其中的一个 regex, 如果满足,则过滤。

比如,则可以使用如下的方法:

  1. 如果无 regex 对像,则可用:
    any (regex.match(regex, line) for regex in [regex1, regex2, regex3])
  2. 如果有 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'
原文地址:https://www.cnblogs.com/qianggezhishen/p/7349329.html