我想從我的序列中找到並替換邏輯「或」運算符(||
)。我該怎麼做?如何使用正則表達式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
我想從我的序列中找到並替換邏輯「或」運算符(||
)。我該怎麼做?如何使用正則表達式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
您需要使用escape sequence
'\
' 在這裏,因爲 '|
' 是一個特殊字符。
'|'
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_')
這裏您不必擔心特殊字符。
或者您可以使用're.escape()'來轉義任意字符串文字:'re.sub(re.escape(「||」),「_或_」,sequence)' –
是的,那也是。感謝您指出了這一點。也會加上那一點。 –
明白了,謝謝 – Naeem
爲什麼不''.replace(「||」,「_or _」)'? –
因爲我想學習如何用正則表達式來完成它。 – Naeem
@Naeem但是你不需要任何正則表達式的任何功能 – khelwood