最近被問到了python中正則化的使用,以及如何寫出匹配表達式:
題目如下:
<div class="nam">中國</div>,用正則匹配出標籤裏面的內容(“中國”),其中class的類名是不確定的
答案:
import re
str1 = '<div class="nam">中國</div>'
res = re.findall(r'<div class=".*">(.*?)</div>',str1)
print(res)
其中的解釋:
findall
在字符串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
Python中字符串前面加上 r 表示原生字符串;
.*具有貪婪的性質,首先匹配到不能匹配爲止,根據後面的正則表達式,會進行回溯。
.*?則相反,一個匹配以後,就往下進行,所以不會進行回溯,具有最小匹配的性質。
. 匹配任意除換行符“\n”外的字符;