最近花時間學習了些簡單的正則知識,我將瞭解到的知識總結在本文中,希望對大家有所幫助
什麼是正則表達式:正則表達式可以判斷字符串是否符合特定的要求,我們可以通過正則表達式來從字符串中獲取我們想得到的特定的部分
正則表達式 由一些普通字符和一些元字符(metacharacters)組成。普通字符包括大小寫的字母和數字,而元字符則具有特殊的含義,下面我給出一些元字符的表達的含義:
\d | 表示任意的一位數字 |
\w | 表示任意的字母和數字 |
\s | 表示空格 |
. | 表示任意的內容 可以是字母也可以是數字,特殊字符等 |
* | 表示內容出現0次到多次 |
+ | 表示內容出現1次到多次 |
? | 表示內容出現0次到1次 |
^ | 表示以xxxx開頭 |
$ | 表示以xxxx結尾 |
{n,m} | 表示內容最少重複n次最多重複m次 |
.* \ .+ | 貪婪模式,正則表達式默認爲貪婪模式,儘量找到所有符合要求的內容 |
.*? | 非貪婪模式,找到第一個符合要求的內容 |
元字符還有很多,我就不一一列舉了。
在Python中使用正則表達式之前應先引入re模塊:
import re
下面列舉幾個正則表達式常用的函數:
compile()函數和match()函數:
import re
pattern = re.compile('(\d+)(\w+)')
content = '123helloWorld'
result = re.match(pattern,content)
if result:
#返回的是一個匹配的對象
print(result)
#返回符合要求的全部內容
print(result.group(0))
print(result.group(1))
運行結果爲:
<_sre.SRE_Match object; span=(0, 13), match='123helloworld'>
123helloworld
123
helloworld
這裏爲大家解釋一下compile(),match(),和group()
compile是編譯的意思,compile 函數用於編譯正則表達式,生成一個正則表達式對象,供其他函數使用。()裏面寫正則表達式的內容。
match是匹配的意思,match函數從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none
匹配成功re.match方法返回一個匹配的對象,否則返回None。我們可以使用group(num) 或 groups() 匹配對象函數來獲取匹配表達式
group:組,正則表達式中每一個()就是一個group組
re.search()函數:掃描整個字符串並返回第一個成功的匹配
pattern = re.compile(r'you')
result = pattern.search('I love you,I miss you,I hate you')
print(result)
pattern = re.compile(r'I')
result = pattern.search('I love you')
print(result)
結果爲:
<_sre.SRE_Match object; span=(7, 10), match='you'>
<_sre.SRE_Match object; span=(0, 1), match='I'>
search函數找到字符串當中第一個符合正則的內容,注意: 只找到第一個 解釋一下 ‘r’:raw string , r 表示字符串爲非轉義的原始字符串,讓編譯器忽略反斜槓,也就是忽略轉義字符
findall()函數:
content = '12345,上山打老虎,老虎沒打着,打只小松鼠,55555'
pattern = re.compile(r'\d{5}')
result = pattern.findall(content)
print(result)
結果爲:
['12345', '55555']
findall函數在字符串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表
re.sub()函數:
content = '楊過對戰金輪法王,郭靖觀戰'
key_word = [(r'楊\s*過','呂布'),
(r'金輪法王','服部半藏'),
(r'郭靖','東方不敗')]
for pattern,replace in key_word:
pattern = re.compile(pattern)
content = pattern.sub(replace,content)
print(content)
結果爲:
呂布對戰金輪法王,郭靖觀戰
呂布對戰服部半藏,郭靖觀戰
呂布對戰服部半藏,東方不敗觀戰
sub用於替換字符串中的匹配項
以上就是正則表達式的一些基礎知識,本文只是入門教程,讓你學習完後能使用基本的表達式進行匹配,由於本人也是剛學正則,文章裏有錯誤的地方歡迎大家指正。