2017-02-15 74 views
1

我想對陣*=&=+=-=|=,並在正則表達式^=,但由於某些原因,下面的圖案,可同時接收<=>=「^」字符匹配兩個「<' and '>」在Python正則表達式

modifyPat = re.compile('\s*[&\|\*/%\+-^]*=[^=]*') 

我已經做了一些挖掘,發現問題就出現了,由於列入模式^性格。如果,例如,我刪除了^如在下面的模式,我得到預期的匹配的行爲,當然輸給^=能力匹配:

modifyPat = re.compile('\s*[&\|\*/%\+-]*=[^=]*') 

這到底是怎麼回事,有沒有什麼辦法包括^字符爲了匹配^=沒有也符合我想要的<=>=

+3

看看'[+ - ^]',連字符必須在最後,'^'不應該在開頭。 –

+1

另外,使用原始字符串:'r'...''。 – user2357112

回答

6

定義集的方式有很多緯度,和其自身的元語法:

[+-^] 

這意味着所有+並在ASCII表,這是他們中的很多^與之間的字符包括<>以及所有字母。

要解決這個問題:

[\+\-\^] 

擺脫任何不規則通常是一個好主意,即使不是絕對必要的。

+0

謝謝你的解釋。我幾乎從不使用字符範圍,並且出於某種原因忘記了'-'被用於此目的。 – user3570982

+0

正則表達式正因爲這個原因而聲名狼借。 – tadman