使用匹配的正则表达式特殊字符拆分一行

时间:2018-01-23 15:46:46

标签: python regex split

目前我想分割一个包含正则表达式的所有匹配特殊字符的行。由于很难解释,这里有几个例子:

('.+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

你知道如何实现这个目标吗?我没找到任何东西。

2 个答案:

答案 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']]