1、re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')表示什麼意思
這個正規表示式 r'\bf[a-z]*'
用於在給定的字串中找到以字母 'f' 開頭的單詞。讓我來逐步解釋:
r
字首表示這是一個原始字串(raw string),在Python中使用正規表示式時常見的做法,因為它可以避免反斜槓的轉義問題。\b
是一個單詞邊界匹配器,表示匹配單詞的開始或結束。f
表示匹配字母 'f'。[a-z]*
表示匹配任意數量(包括零個)的小寫字母。[a-z]
表示匹配任意小寫字母,*
表示前面的模式可以出現零次或多次。
所以,re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
的意思是在給定字串中找到以字母 'f' 開頭的單詞,忽略大小寫,輸出結果為:['foot', 'fell', 'fastest']
。
2、re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')表示什麼含義
這個正規表示式 r'(\b[a-z]+) \1'
在 re.sub()
函式中被用來查詢重複的單詞,並且將重複的單詞替換為單個例項。讓我解釋一下:
(\b[a-z]+)
:這是第一個捕獲組,\b
匹配單詞的邊界,[a-z]+
匹配一個或多個連續的小寫字母。- 空格:表示匹配一個空格。
\1
:這是反向引用,它表示引用第一個捕獲組中的內容。
因此,正規表示式 (\b[a-z]+) \1
匹配重複的單詞。例如,在輸入字串 'cat in the the hat'
中,the the
是重複的單詞。
re.sub()
函式用於替換匹配的模式。在這裡,第一個引數是正規表示式模式,第二個引數是替換的字串,第三個引數是輸入字串。在替換字串中,r'\1'
表示使用捕獲組中匹配到的內容,即重複的單詞,因此將重複的單詞替換為單個例項。
所以,re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
的含義是在給定的字串中查詢重複的單詞,並將重複的單詞替換為單個例項。輸出結果是 'cat in the hat'
。