如何提取和删除两个标题之间的文本:合唱和诗歌使用正则表达式



我在变量testrongtring中有这个示例字符串。我想删除合唱文本。它的格式是:[colore etc.]chorus_text[verse etc.]。我在python中尝试了一些regex模式,但什么都没有。知道吗?我提供的模式并不能满足我的需要。chorus_text包括标点符号和字符。

test_string = """Cordae,RNP,2019.0,"RNP Lyrics[Chorus: Anderson .Paak] text text text text text text te'all tean' tean' text text text [Verse 1: YBN Cordae]."""
pattern = re.compile(r"[^[chorus]$][^[verse]]")
subbed_chorus_before_verse = pattern.findall(test_string)
test_string = """Cordae,RNP,2019.0,"RNP Lyrics[Chorus: Anderson .Paak] text text text text text text te'all tean' tean' text text text [Verse 1: YBN Cordae]."""
re.sub('(?<=])(.*)(?=[)','',test_string)
# (?<=]) : positive lookbehind for ]
# (?=[ : positive look ahead for [
'Cordae,RNP,2019.0,"RNP Lyrics[Chorus: Anderson .Paak][Verse 1: YBN Cordae].'

您可以使用

re.sub(r'[Chorus:[^][]*][^[]*', '', test_string)

请参阅演示。

详细信息

  • [Chorus:-[Chorus:字符串
  • [^][]*-除][之外的零个或多个字符
  • ]-]字符
  • [^[]*-除[之外的零个或多个字符