子內的字符我有以下列表:查找使用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