5 回答

TA貢獻(xiàn)1780條經(jīng)驗 獲得超5個贊
前兩個和后兩個分別用于在編程語言里轉(zhuǎn)義成反斜杠,
轉(zhuǎn)換成兩個反斜杠后再在正則表達(dá)式里轉(zhuǎn)義成一個反斜杠。

TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊
其實已經(jīng)描述的很清楚了,首先這個正則語句是一個字符串,而Python字符串里面表達(dá)一個反斜杠就要兩個反斜杠,所以其實這里給到正則解析器的時候其實只有一個反斜杠,而正則里,表達(dá)一個反斜杠又需要兩個反斜杠,所以總共需要四個。

TA貢獻(xiàn)1816條經(jīng)驗 獲得超6個贊
`r"\"` 會造成語法錯的。這樣做的目的是,r 字符串通常用于正則,而末尾出現(xiàn)單數(shù)個 `\` 的正則是有問題的,所以 Python 的 r 字符串不允許以單數(shù)個 `\` 結(jié)尾。
好吧,可惡的 markdown……看來只有這樣寫才會正常點……

TA貢獻(xiàn)1833條經(jīng)驗 獲得超4個贊
首先,假設(shè)正則是這樣子的\d
,由于Python將\
字符看做是轉(zhuǎn)義字符,為了使Python將這一段里的右斜杠看成是普通字符,所以要對這個斜杠進(jìn)行轉(zhuǎn)義,成了\\d
。
然后\\d
由于要被放到文本里,如果直接用文本\\d
的話,顯示出來的是文本\d
,這樣直接把這個文本放到正則解析器里去的話,\d
就會成為被正則解析器認(rèn)為是一個控制字符。所以文本里需要\\\\d
。
具體如下:
字符串\\\\d
中,第一和第三個右斜杠被Python視為轉(zhuǎn)義符號,所以實際字符串表示的是\\d
。
此字符串\\d
被傳入正則解析器,正則解析器的Python代碼將第一個\
視為轉(zhuǎn)義符號,得到\d
。

TA貢獻(xiàn)1856條經(jīng)驗 獲得超17個贊
在正則表達(dá)式中匹配反斜杠需要對反斜杠進(jìn)行轉(zhuǎn)義,這會導(dǎo)致\\
。然后,為了在python(很多語言中)字符串中使用反斜杠,也必須對它進(jìn)行轉(zhuǎn)義,因此對兩個反斜杠進(jìn)行轉(zhuǎn)義就意味著總共會得到4個反斜杠。
添加回答
舉報