我正在尝试匹配这样的模式:
模式 :( abc)(def)(ghi)h
的匹配:
组0 = [a,b,c]
第1组= [d,e,f]
第2组= [g,h,i]
第3组= h
是否可以通过正则表达式将数据外推到如上所述的列表中?
正在使用的代码是Python供参考。
答案 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