正規表示式(一) 常用元字元

2021-09-19 21:14:22 字數 2784 閱讀 5797

正規表示式是一種字串模式,用來對某些規則的文字內容進行處理。利用字串構成成的資料結構,來完成對文字內容的匹配。

經常可以看到正規表示式的句子裡包含了一些\d\w()之類的符號,這些特殊格式的符號可以看做正則結構中的元素,這些符號也成之為元字元,下面介紹下這些元字元的作用。

下面列出正則中常用元字元及表示意思,這些通用元字元的使用在不同語言中表達作用是相同的。

匹配字元內容

符號代表意思

使用場景

\d數字0-9

\d 匹配單個數字,1、2、3

\d非數字

\d 匹配單個非數字,a、-、'

\w字母、數字、下劃線

\w 匹配單個字母、數字、下劃線,a、1、_

\w非字母、數字、下劃線

\w 匹配單個非字母、數字、下劃線,

m次到n次

\d 匹配數字,2、12、123

n次\d 匹配數字,12

n次及n次以上

\d 匹配數字,12、123、1234

有了表達次數的元字元後,上述形式的字串模板寫法就簡單些了

\d                      ---------           123

\w\s --------- hello world

但是只有萬用字元號、和次數的元字元還不足以應對常用場景:

string line = "hello world!"
這裡如果要匹配整個字串內容,或者只匹配hello這乙個單詞,也就是需要對字串的位置進行校驗,下面列出匹配位置的元字元

分組符號

在繼續之前,首先介紹下"()",這裡的小括號"()",稱之為分組,分組匹配的內容可以在後續的正則中重複使用,只需要指定分組的序號即可。分組的序號是從左往右以此遞增的

示例:

^(\w)\s\1\b    ---------     long long ago  ---  >    匹配"long long"
分組的作用,除了提供後續引用之外,也用作捕獲組,即正則中分組對應的匹配內容

示例:

import re

reg = "(\w)(\w)"

print(re.match(reg,"hello").groups())

輸出結果:

('he', 'llo')

hello

由例子中可以看出這裡的()分組捕獲的匹配內容

有捕獲分組,自然也有非捕獲分組,在分組開頭新增?:,表示該分組對應內容為非捕獲分組

示例:

import re

reg = "(?:\w)(\w)"

print(re.match(reg,"hello").groups())

print(re.match(reg,"hello").group(1))

輸出結果:

('llo',)

llo

其中分組的序號由"("出現的順序確定,第乙個"("序號為1,從左往右遞增

示例:

import re

reg = "((?:\w)(\w))"

print(re.match(reg,"hello").groups())

print(re.match(reg,"hello").group(1))

print(re.match(reg,"hello").group(2))

輸出結果:

('hello', 'llo')

hello

llo

匹配位置

符號代表意思

使用場景

^字串開始位置

(^)abc 匹配字串開頭位置,a前面的位置

$字串結束位置

abc($) 匹配字串結束位置,c後面的位置

\b單詞(\w)與非單詞之間的位置

a(\b)= 匹配"a"與"="之間的位置

\b字元與字元之間的位置

a(\b)b 匹配"a"與"b"之間的位置

這裡的元字元只是匹配位置,通過使用位置元字元來限制、過濾指定位置條件的內容。

^(\w)\b   -----      hello world ->  匹配內容為: hello
這裡的匹配過程是:

其他元字元

符號代表意思

使用場景

匹配範圍

[a-za-z] 匹配單個英文本母

^在上面的匹配位置元字元中,僅僅介紹了匹配字串開頭位置的作用,這裡另外乙個作用就是放在範圍元字元中,起到取反的作用

[^a-d] 匹配單個非a,b,c,d四個英文本母之外的字元

\轉義元字元

1\+ 匹配"1+"

|分支條件

ab|cd 匹配ab、cd

正規表示式 元字元

現在你已經知道幾個很有用的元字元了,如 b 還有 d 當然還有更多的元字元可用,比如 s 匹配任意的空白符,包括空格,製表符 tab 換行符,中文全形空格等 w匹配字母或數字或下劃線或漢字等。ba w b 匹配以字母a 開頭的單詞 先是某個單詞開始處 b 然後是字母a 然後是任意數量的字母或數字 w...

正規表示式 元字元

元字元 描述.點 匹配任何單個字元。例如正規表示式r.t匹配這些字串 rat rut r t,但是不匹配root。匹配行結束符。例如正規表示式weasel 能夠匹配字串 he s a weasel 的末尾 但是不能匹配字串 they are a bunch of weasels.匹配一行的開始。例如...

正規表示式元字元

l 基本元字元 元字元說明 匹配任意單個字元 邏輯或操作符 定義乙個字元集合,匹配該集合中的乙個字元 對字元集合求非 是對整個集合求非,而不是緊挨著 符號的字元 在字元集合中定義乙個區間。如 a za z 對下乙個字元轉義。比如 n表示換行。數量元字元 元字元說明 匹配前乙個字元 子表示式 零次或多...