我有以下列表:
l = ['(PREDIR )?NAME SUFTYP|PREDIR NAME( SUFTYP)?', '(PREDIR )?NAME|PREDIR NAME', '(PREDIR )?PRETYP NAME SUFTYP( SUFDIR)?|PREDIR (PRETYP )?NAME( SUFTYP)? SUFDIR', '(PREDIR )?PRETYP NAME|PREDIR (PRETYP )?NAME', 'NAME SUFTYP( SUFDIR)?|NAME( SUFTYP)? SUFDIR', 'NAME SUFTYP|NAME( SUFTYP)?', 'NAME|NAME', 'PRETYP NAME ( SUFDIR)?|(PRETYP )?NAME SUFDIR']
我想查找?
仅包含在一侧的项目|
,并仅替换为包含的一侧?
。
具体来说,我希望我希望将其中的项目l
替换为以下内容:
'(PREDIR )?NAME|PREDIR NAME'
->'(PREDIR )?NAME'
'(PREDIR )?PRETYP NAME|PREDIR (PRETYP )?NAME'
->'(PREDIR )?PRETYP NAME|PREDIR (PRETYP )?NAME'
'NAME SUFTYP|NAME( SUFTYP)?'
->'NAME( SUFTYP)?'
我能想到的唯一方法是通过一个迭代过程,我?
首先检查左侧而不是右侧,然后反之亦然。
以下不起作用。
for i in l:
i = re.sub(r'(.*?\?.*?)(\|.*?[^?].*?)',r'\1',i)