2016-09-23 200 views
3

Python的re module documentation說:如果正則表達式中` A`與`^`(脫字符)有區別?

^:(尖號)匹配字符串的開始,在MULTILINE模式也各換行符後立即匹配。

\A:僅匹配字符串的開頭。

使用它們時有什麼區別嗎?

+4

你剛纔說它們的區別。 '\ A'是明確的字符串開始錨點。 '^'可以根據修飾符改變它的行爲。你想得到什麼樣的答案? –

+0

好吧,你的意思是你想知道何時可以使用它們嗎?它仍然與你已經指出的差異有關。當你想匹配一個字符串的開頭或者一行時,你只需要使用'^',當你只需要匹配一個字符串的開始時,就可以使用'\ A'。 –

+1

'\ A'特別有趣,當你建立一個多行模式的模式,你必須區分行的開始和字符串的開始。 –

回答

4

這兩個比賽:

re.search('^abc', 'abc') 
re.search('\Aabc', 'abc') 

這也符合:

re.search('^abc', 'firstline\nabc', re.M) 

這不:

re.search('\Aabc', 'firstline\nabc', re.M) 
+0

剛剛證實're.search('^ abc','firstline \ nabc')'不符合預期。感謝你的例子! –

1

\A是明確的字符串開始錨點。 ^可以根據是否使用re.M修飾符來更改其行爲。

何時使用\A何時使用^

當你想爲一個字符串行的任一開始匹配,您使用^,當你只需要一個字符串開始匹配任何修飾無論使用\A。您可以重新使用同一個字符串模式,但使用不同的標誌進行編譯。

這也意味着,如果你正在使用re.M標誌,並且要在字符串開始匹配,然後行啓動位置,你會混這一模式裏面\A^