python的re正則匹配

海_纳百川發表於2024-03-25
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'

相關文章