目前我想分割一个包含正则表达式的所有匹配特殊字符的行。由于很难解释,这里有几个例子:
('.+abcd[0-9]+\.mp3', 'Aabcd09.mp3')
- > [ 'A', '09' ]
.+
是正则表达式的特殊表达式,这是我想要的匹配[0-9]+
是另一个正则表达式,我也想要它匹配的内容 ('.+\..+_[0-9]+\.mp3', 'A.abcd_09.mp3')
- > [ 'A', 'abcd', '09' ]
.+
是正则表达式的第一个特殊表达式,它匹配A
.+
是正则表达式的第二个特殊表达式,它匹配abcd
[0-9]+
是正则表达式的第三个特殊表达式,它匹配09
你知道如何实现这个目标吗?我没找到任何东西。
答案 0 :(得分:0)
看起来您需要一个所谓的tokenizer/lexer来首先解析正则表达式。它允许您在子表达式上拆分基础正则表达式。然后只需将这些子表达式应用于原始字符串并打印出匹配项。
答案 1 :(得分:0)
你可以试试这个:
import re
s = ['Aabcd09.mp3', 'A.abcd_09.mp3']
new_s = [re.findall('(?<=^)[a-zA-Z]|(?<=\.)[a-zA-Z]+(?=_)|\d+(?=\.mp3)', i) for i in s]
输出:
[['A', '09'], ['A', 'abcd', '09']]