您好,登錄后才能下訂單哦!
import re
print('\ a:{}個字符,\\a:{}個字符'.format(len('\ a'),len('\a')))
#結果: \ a:3個字符,\a:1個字符
match2 = re.findall('\\\\','\ a')
match3 = re.findall('\\\\','\a')
match4 = re.findall('\\a','\a')
print(match2,match3,match4)
print(match2[0],match4[0])
#結果: ['\\'] [] ['\x07']
#結果: \
match5 = re.findall(r'\\','\ a')
match6 = re.findall(r'\\','\a')
match7 = re.findall(r'\a','\a')
print(match5,match6,match7)
#結果: ['\\'] [] ['\x07']
?
第一段:在字符串中,\a為一個字符,\空格為兩個字符。
?
第二段:在字符串中,無法搜索出\a字符中單獨的反斜杠\,需要整體字符搜索。當需要搜索單獨的一個反斜杠\時,需要使用兩個\來搜索,即使用一個轉義符\來表示反斜杠本身,re中pattern則要寫為'\\\\'或r'\\'。
?
第三段:r'\'相當于'\\',同理r'\\'相當于"\\\\"。
?
參考:https://docs.python.org/3/library/re.html#regular-expression-syntax
\
If you’re not using a raw string to express the pattern, remember that Python also uses the backslash as an escape sequence in string literals; if the escape sequence isn’t recognized by Python’s parser, the backslash and subsequent character are included in the resulting string. However, if Python would recognize the resulting sequence, the backslash should be repeated twice. This is complicated and hard to understand, so it’s highly recommended that you use raw strings for all but the simplest expressions.
如果你沒有使用原始字符串來表達模式,請記住Python也使用反斜杠作為字符串文字中的轉義序列; 如果Python的解析器無法識別轉義序列,則反斜杠和后續字符將包含在結果字符串中。但是,如果Python識別出結果序列,則反斜杠應重復兩次。這很復雜且難以理解,因此強烈建議您使用原始字符串,除了最簡單的表達式。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。