正则表达式组匹配

时间:2011-04-08 19:12:29

标签: python regex

我正在尝试匹配这样的模式:

模式 :( abc)(def)(ghi)h
匹配
    组0 = [a,b,c]
    第1组= [d,e,f]
    第2组= [g,h,i]
    第3组= h

是否可以通过正则表达式将数据外推到如上所述的列表中?

正在使用的代码是Python供参考。

1 个答案:

答案 0 :(得分:2)

AFAIK,这在一个正则表达式中是不可能的。你可以这样做:

import re

matches = re.findall('[^()]+', '(abc)(def)(ghi)h')
map = []
for m in matches: 
  map.append(list(m))
for e in map:
  print e

将打印:

['a', 'b', 'c']
['d', 'e', 'f']
['g', 'h', 'i']
['h']

修改

模式[^()]匹配()以外的任何字符,因此[^()]+匹配(和{{1}以外的一个或多个字符}}

)[之间的所有内容都称为字符类,并且始终只匹配一个字符。一开始的]使它成为一个否定的字符类(匹配所有内容 - 但在其中定义的内容)。

有关角色类的更多信息:http://www.regular-expressions.info/charclass.html