3
最近,我剛剛發現re.escape
有益於迅速從一個字符串獲取正則表達式。當我傳似'a b c'
一個字符串,我很困惑的是,爲什麼每一個空間與\
字符轉義。 AFAIK,編寫一個與該字符串匹配的等價表達式,不需要轉義空格字符。爲什麼這種差異會發生?謝謝。爲什麼re.escape逃逸空間
最近,我剛剛發現re.escape
有益於迅速從一個字符串獲取正則表達式。當我傳似'a b c'
一個字符串,我很困惑的是,爲什麼每一個空間與\
字符轉義。 AFAIK,編寫一個與該字符串匹配的等價表達式,不需要轉義空格字符。爲什麼這種差異會發生?謝謝。爲什麼re.escape逃逸空間
這樣做,因爲它是明確的。的空間可以從字面上匹配的空間,但它也可以是一個冗長的正則表達式,正則表達式的一部分,並且不被意味着匹配。
由此產生的正則表達式,我猜/a\ b\ c/
,是一個非常明確的正則表達式,匹配一個a後跟一個空格,後跟一個b,後跟一個空格,後跟一個c。
如果你把它寫自己,你也可以使用/a\sb\sc/
這將匹配字母之間的任何空白。甚至:
r = re.compile(r"""a #match a
b #match b
C#match c
"""
這最後一個將與re.VERBOSE編譯是寫你的正則表達式非常精細的可讀性在源代碼的方式。這個正則表達式會完全忽略空格,因此不符合你的情況。對於正則表達式,請記住,所有不明確的事情,在凌晨3點都會失效。