Python的re
module documentation說:如果正則表達式中` A`與`^`(脫字符)有區別?
^
:(尖號)匹配字符串的開始,在MULTILINE模式也各換行符後立即匹配。
\A
:僅匹配字符串的開頭。
使用它們時有什麼區別嗎?
Python的re
module documentation說:如果正則表達式中` A`與`^`(脫字符)有區別?
^
:(尖號)匹配字符串的開始,在MULTILINE模式也各換行符後立即匹配。
\A
:僅匹配字符串的開頭。
使用它們時有什麼區別嗎?
這兩個比賽:
re.search('^abc', 'abc')
re.search('\Aabc', 'abc')
這也符合:
re.search('^abc', 'firstline\nabc', re.M)
這不:
re.search('\Aabc', 'firstline\nabc', re.M)
剛剛證實're.search('^ abc','firstline \ nabc')'不符合預期。感謝你的例子! –
\A
是明確的字符串開始錨點。 ^
可以根據是否使用re.M
修飾符來更改其行爲。
何時使用\A
何時使用^
?
當你想爲一個字符串或行的任一開始匹配,您使用^
,當你只需要一個字符串開始匹配任何修飾無論使用\A
。您可以重新使用同一個字符串模式,但使用不同的標誌進行編譯。
這也意味着,如果你正在使用re.M
標誌,並且要在字符串開始匹配,然後行啓動位置,你會混這一模式裏面\A
和^
。
你剛纔說它們的區別。 '\ A'是明確的字符串開始錨點。 '^'可以根據修飾符改變它的行爲。你想得到什麼樣的答案? –
好吧,你的意思是你想知道何時可以使用它們嗎?它仍然與你已經指出的差異有關。當你想匹配一個字符串的開頭或者一行時,你只需要使用'^',當你只需要匹配一個字符串的開始時,就可以使用'\ A'。 –
'\ A'特別有趣,當你建立一個多行模式的模式,你必須區分行的開始和字符串的開始。 –