链接re.sub(),而不中断先前的re.sub()-python

链接re.sub(),而不中断先前的re.sub()-python,python,regex,string,substitution,Python,Regex,String,Substitution,我有这样一个文件: (a) a. lo mfana (20) Juan - il- -ech (lik) ! EB1: Incwadi [esi-yi-funda-yo: isitshudeni] in-de Papa-wu-rna parlapiya-nyi paja-lkura. b) kupi-Nku Nia taca-mu i. gaan1 fong2 hak1 maa1 maa1, nei5 dim2 tai2 dou2 syu1 gaa3 i. 4. a. ngo5 lou5gun

我有这样一个文件:

(a) a. lo mfana
(20) Juan - il- -ech (lik) !
EB1: Incwadi [esi-yi-funda-yo: isitshudeni] in-de
Papa-wu-rna parlapiya-nyi paja-lkura.
b) kupi-Nku Nia taca-mu
i. gaan1 fong2 hak1 maa1 maa1, nei5 dim2 tai2 dou2 syu1 gaa3 i. 
4. a. ngo5 lou5gung1 ci3ci3 faan1lei4. dou1 haak1 saai3 gam2
(n-ngwathel-l-e )
M: sik6-saai3 laa3!   (17)
U3 :      O?i=j se-si-ni           duy-ur-am-yor-du (17)
我想去掉像字符串开头的子字符串一样的项目符号。这些项目符号或用圆括号括起来,以最多3个字母数字字符开头,以
结尾

所需输出为:

a. lo mfana
Juan - il- -ech (lik) !
Incwadi [esi-yi-funda-yo: isitshudeni] in-de
Papa-wu-rna parlapiya-nyi paja-lkura.
kupi-Nku Nia taca-mu
gaan1 fong2 hak1 maa1 maa1, nei5 dim2 tai2 dou2 syu1 gaa3 i. 
a. ngo5 lou5gung1 ci3ci3 faan1lei4. dou1 haak1 saai3 gam2
(n-ngwathel-l-e )
sik6-saai3 laa3!   (17)
O?i=j se-si-ni           duy-ur-am-yor-du (17)
我一直这样做,但我的正则表达式。但我失败是因为:

  • 使用
    src=re.sub(r'\([^)]*\),'',src)
    ,我删除的不仅仅是标题
    (…)

    [in]:(20)胡安-伊尔——ech(lik)

    [out]:胡安-伊尔——啊

    [需要]:胡安-伊尔——ech(lik)

  • 使用
    src=re.sub(r'^\([^)]*\),'',src)
    ,我能够在正则表达式中用
    ^
    指定行的开头,但它没有得到最多3个字母数字的条件

    [in]:(n-ngwathel-l-e)

    [out]:

    [需要]:(n-ngwathel-l-e)

    [in]:U3:O?i=j我是你的朋友(17)

    [out]:

    [需要]:O?i=j我是你的朋友(17)

  • 使用
    re.sub(r'^:[^]*\),'',src)
    re.sub(r'^.[^]*\),'',src)
    ,我无法使正则表达式检测
    [0-9a-zA-z][0-9a-zA-z][0-9a-zA-z]
    ,后面跟着一个
    /code>或

    [in]:4。A.ngo5 lou5gung1 Ci3 Faan4。dou1 haak1 saai3 gam2

    [out]:4。A.ngo5 lou5gung1 Ci3 Faan4。dou1 haak1 saai3 gam2

    [需要]:a。ngo5 lou5gung1 Ci3 Faan4。dou1 haak1 saai3 gam2

    [in]:EB1:Incwadi[esi yi funda yo:isitshudeni]在德

    [out]:EB1:Incwadi[esi yi funda yo:isitshudeni]在德

    [需要]:在德瓦迪[伊西基金会:伊希茨胡德尼]

我应该如何形成单个正则表达式/正则表达式替换链,以便不破坏其他正则表达式的其他条件?

解决方案 描述

演示

讨论 我将获取每个正则表达式,并在每个正则表达式中输出问题:

一,。使用src=re.sub(r'([^)])','',src),我删除的不仅仅是标题(…)*

*
量词是贪婪的。它将尝试使用非
最可能的字符。这就是为什么你得到的不仅仅是标题

二,。使用
src=re.sub(r'^\([^)]*\),'',src)
,我能够在正则表达式中指定以^开头的行,但它没有得到最多3个字母数字的条件

*
量词表示
零或更多
。如果希望最多3个字母数字,则需要使用此量词:
{1,3}
。它的意思是1、2或3次

3.使用re.sub(r'^:[^]')、'',src)和re.sub(r'^.[^]')、'',src),我无法使正则表达式检测[0-9a-zA-z][0-9a-zA-z][0-9a-zA-z],然后是一个。或:

这里正则表达式缺少分别匹配这些字符的

^\(?\w{1,3}\s*[):.]\s*