正規表示式 分組

2021-10-04 10:32:02 字數 3396 閱讀 3574

字元功能^

匹配字串開頭

$匹配字串結尾

#coding=utf-8

import re

email_list = ["[email protected]", "[email protected]", "[email protected]"]

for email in email_list:

ret = re.match("[\w]@163\.com$", email)

if ret:

print("%s 是符合規定的郵件位址,匹配後的結果是:%s" % (email, ret.group()))

else:

print("%s 不符合要求" % email)

執行結果:

[email protected] 是符合規定的郵件位址,匹配後的結果是:[email protected]

[email protected] 不符合要求

[email protected] 不符合要求

字元功能|

匹配左右任意乙個表示式

(ab)

將括號中字元作為乙個分組

\num引用分組num匹配到的字串

(?p)分組起別名

(?p=name)

引用別名為name分組匹配到的字串

示例2|,需求:匹配出0-100之間的數字:

ret = re.match("[1-9]?\d$|100","8")

print(ret.group()) # 8

ret = re.match("[1-9]?\d$|100","78")

print(ret.group()) # 78

ret = re.match("[1-9]?\d$|100","08")

# print(ret.group()) # 不是0-100之間

ret = re.match("[1-9]?\d$|100","100")

print(ret.group()) # 100

#coding=utf-8

import re

ret = re.match("\w@163\.com", "[email protected]")

print(ret.group()) # [email protected]

ret = re.match("\w@(163|126|qq)\.com", "[email protected]")

print(ret.group()) # [email protected]

ret = re.match("\w@(163|126|qq)\.com", "[email protected]")

print(ret.group()) # [email protected]

ret = re.match("\w@(163|126|qq)\.com", "[email protected]")

if ret:

print(ret.group())

else:

print("不是163、126、qq郵箱") # 不是163、126、qq郵箱

import re

tels = ["13100001234", "18912344321", "10086", "18800007777"]

for tel in tels:

ret = re.match("1\d[0-35-68-9]", tel)

if ret:

print(ret.group())

else:

print("%s 不是想要的手機號" % tel)

[^-]表示除了-之外的任何字元

# [^-]表示除了-之外的任何字元

>>> ret = re.match("([^-]*)-(\d+)","010-12345678")

>>> ret.group()

'010-12345678'

>>> ret.group(1)

'010'

>>> ret.group(2)

'12345678'

示例4\,匹配出hh:

#coding=utf-8

import re

# 能夠完成對正確的字串的匹配

ret = re.match("\w*", "hh")

print(ret.group())

# 如果遇到非正常的html格式字串,匹配出錯

ret = re.match("\w*", "hh")

print(ret.group())

# 正確的理解思路:如果在第一對<>中是什麼,按理說在後面的那對<>中就應該是什麼

# 通過引用分組中匹配到的資料即可,但是要注意是元字串,即類似 r""這種格式

ret = re.match(r"\w*", "hh")

print(ret.group())

# 因為2對<>中的資料不一致,所以沒有匹配出來

test_label = "hh"

ret = re.match(r"\w*", test_label)

if ret:

print(ret.group())

else:

print("%s 這是一對不正確的標籤" % test_label

執行結果:

hh

hhhh

hh 這是一對不正確的標籤

示例5\number ,需求:匹配出

#coding=utf-8

import re

labels = ["

", "

是符合要求的標籤

#coding=utf-8import re

ret = re.match(r".*", "

")ret.group()

ret = re.match(r".*", "www.itcast.cn

")ret.group()

注意:(?p)(?p=name)中的字母p大寫執行結果:

正規表示式 分組

正規表示式對於單個字元的重複,非常方便。比如 d 表示1個或多個數字,表示重複0次或多次 重複1次或多次 重複0次或1次 重複n次 重複n次或多次 重複n次到m次 指定的字元後加特定的限定符,即可實現單字元的重複,那麼,對於一組字串的重複,正規表示式該如何操作?用小括號來指定子表示式 或稱分組 對指...

分組 正規表示式

在正規表示式中,可以用小括號將一些規則括起來當作分組,分組可以作為乙個元字元來看待。d d這是乙個簡單的且不完善的匹配 ip 位址的正規表示式,因為它除了能匹配正確的 ip 位址外,還能匹配如 322.197.578.888 這種不存在的 ip 位址。當然,用這個表示式簡單匹配成功後可以在利用 ph...

正規表示式 分組

group 分組 分了幾組就看分了幾個小括號 分了幾對小括號 當有巢狀的小括號時,怎麼區分那個是第一組那個是第二組呢?只需要數小括號邊的左小括號,看到第乙個左小括號就是第一組,第二個左小括號就是第二組 group 分組 public class test8 3到5位的數字 a z 2位的字母 a z...