2017-09-26 58 views
1

我想從我的序列中找到並替換邏輯「或」運算符(||)。我該怎麼做?如何使用正則表達式Python找到邏輯運算符(||)

以下是代碼,我想

import re 
sequence = "if(ab||2) + H) then a*10" 
expr = re.sub(r"||","_or_",sequence) 
print (expr) 

預期的答案應該是

if(ab_or_2) + H) then a*10 
+4

爲什麼不''.replace(「||」,「_or _」)'? –

+0

因爲我想學習如何用正則表達式來完成它。 – Naeem

+1

@Naeem但是你不需要任何正則表達式的任何功能 – khelwood

回答

0

您需要使用escape sequence '\' 在這裏,因爲 '|' 是一個特殊字符。

Python docs

'|'

A | B,其中A和B可以是任意RE,創建一個規則的 表達式,它將匹配A或B.任意數量的RE 可以用'|'分隔。通過這種方式。這可以在 組內使用(見下文)。當目標字符串被掃描時,由'|'分隔的RE 從左到右嘗試。

所以,你需要做的:

expr = re.sub(r"\|\|","_or_",sequence) 

或者,使用re.escape():感謝@Steven指出這

expr = re.sub(re.escape("||"),"_or_",sequence) 

,你會得到:

IN : sequence = "if(ab||2) + H) then a*10" 
OUT : 'if(ab_or_2) + H) then a*10' 

編輯:

如果您不需要使用regex,則可以直接使用replace作爲字符串。即

sequence.replace('||','_or_') 

這裏您不必擔心特殊字符。

+1

或者您可以使用're.escape()'來轉義任意字符串文字:'re.sub(re.escape(「||」),「_或_」,sequence)' –

+0

是的,那也是。感謝您指出了這一點。也會加上那一點。 –

+1

明白了,謝謝 – Naeem