子内的字符我有以下列表:查找使用Python正则表达式
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)
工作正常!我会给你的答案接受的紧凑性(和避免正则表达式;)) – user1185790 2013-02-15 18:20:25