正则表达式分组匹配
我正在尝试匹配一个模式,像这样:
模式: (abc)(def)(ghi)h
匹配结果:
组 0 = [a,b,c]
组 1 = [d,e,f]
组 2 = [g,h,i]
组 3 = h
通过正则表达式,有可能把数据提取成这样一个列表吗?
这里使用的代码是Python,供参考。
1 个回答
2
据我所知,这个在一个正则表达式中是做不到的。你可以试试这样的做法:
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']
编辑
这里的模式 [^()]
是用来匹配除了 (
和 )
以外的任何字符,所以 [^()]+
就是匹配一个或多个不是 (
和 )
的字符。
在 [
和 ]
之间的内容叫做字符类,它总是只匹配一个字符。开头的 ^
表示这是一个否定字符类,也就是说它会匹配所有不在这个字符类中的字符。
关于字符类的更多信息,可以查看这个链接:http://www.regular-expressions.info/charclass.html