国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【正則表達(dá)式】正則表達(dá)式常見匹配模式

這篇具有很好參考價值的文章主要介紹了【正則表達(dá)式】正則表達(dá)式常見匹配模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

常見匹配模式

模式 描述
\w 匹配字母數(shù)字及下劃線
\W 匹配非字母數(shù)字下劃線
\s 匹配任意空白字符,等價于 [\t\n\r\f].
\S 匹配任意非空字符
\d 匹配任意數(shù)字,等價于 [0-9]
\D 匹配任意非數(shù)字
\A 匹配字符串開始
\Z 匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串
\z 匹配字符串結(jié)束
\G 匹配最后匹配完成的位置
\n 匹配一個換行符
\t 匹配一個制表符
^ 匹配字符串的開頭
$ 匹配字符串的末尾。
. 匹配任意字符,除了換行符,當(dāng)re.DOTALL標(biāo)記被指定時,則可以匹配包括換行符的任意字符。
[…] 用來表示一組字符,單獨列出:[amk] 匹配 ‘a(chǎn)’,‘m’或’k’
[^…] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
* 匹配0個或多個的表達(dá)式。
+ 匹配1個或多個的表達(dá)式。
? 匹配0個或1個由前面的正則表達(dá)式定義的片段,非貪婪方式
{n} 精確匹配n個前面表達(dá)式。
{n, m} 匹配 n 到 m 次由前面的正則表達(dá)式定義的片段,貪婪方式
a|b 匹配a或b
( ) 匹配括號內(nèi)的表達(dá)式,也表示一個組

re.match 從字符串的起始位置匹配一個模式

re.match 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。總結(jié):盡量使用泛匹配、使用括號得到匹配目標(biāo)、盡量使用非貪婪模式、有換行符就用re.S

泛匹配

import re

content = 'Hello 123 4567 World_This is a Regex Demo'
result = re.match('^Hello.*Demo$', content)
print(result)
print(result.group())
print(result.span())

<re.Match object; span=(0, 41), match='Hello 123 4567 World_This is a Regex Demo'>
Hello 123 4567 World_This is a Regex Demo
(0, 41)

匹配目標(biāo)

import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^Hello\s(\d+)\sWorld.*Demo$', content)
print(result)
print(result.group(1))
print(result.span())

<re.Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
1234567
(0, 40)

貪婪匹配

import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^He.*(\d+).*Demo$', content)
print(result)
print(result.group(1))

<re.Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
7

非貪婪匹配

import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^He.*?(\d+).*Demo$', content)
print(result)
print(result.group(1))

<_sre.SRE_Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'>
1234567

匹配模式

import re

content = '''Hello 1234567 World_This
is a Regex Demo
'''
result = re.match('^He.*?(\d+).*?Demo$', content, re.S)	# 可以匹配到換行
print(result.group(1))

1234567

轉(zhuǎn)義

import re

content = 'price is $5.00'
result = re.match('price is \$5\.00', content)
print(result)

<re.Match object; span=(0, 14), match='price is $5.00'>

re.search 掃描整個字符串并返回第一個成功的匹配

re.search 掃描整個字符串并返回第一個成功的匹配。

import re
content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
result = re.match('Hello.*?(\d+).*?Demo', content)
print(result) # None

# 總結(jié):為匹配方便,能用search就不用match
import re
content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
result = re.search('Hello.*?(\d+).*?Demo', content)
print(result)
print(result.group(1))

<_sre.SRE_Match object; span=(13, 53), match='Hello 1234567 World_This is a Regex Demo'>
1234567

re.findall 以列表形式返回全部能匹配的子串

搜索字符串,以列表形式返回全部能匹配的子串。

import re

html = '''<div id="songs-list">
    <h2 class="title">經(jīng)典老歌</h2>
    <p class="introduction">
        經(jīng)典老歌列表
    </p>
    <ul id="list" class="list-group">
        <li data-view="2">一路上有你</li>
        <li data-view="7">
            <a href="/2.mp3" singer="任賢齊">滄海一聲笑</a>
        </li>
        <li data-view="4" class="active">
            <a href="/3.mp3" singer="齊秦">往事隨風(fēng)</a>
        </li>
        <li data-view="6"><a href="/4.mp3" singer="beyond">光輝歲月</a></li>
        <li data-view="5"><a href="/5.mp3" singer="陳慧琳">記事本</a></li>
        <li data-view="5">
            <a href="/6.mp3" singer="鄧麗君">但愿人長久</a>
        </li>
    </ul>
</div>'''
results = re.findall('<li.*?>\s*?(<a.*?>)?(\w+)(</a>)?\s*?</li>', html, re.S)
print(results)
for result in results:
    print(result[1])

[('', '一路上有你', ''), ('<a href="/2.mp3" singer="任賢齊">', '滄海一聲笑', '</a>'), ('<a href="/3.mp3" singer="齊秦">', '往事隨風(fēng)', '</a>'), ('<a href="/4.mp3" singer="beyond">', '光輝歲月', '</a>'), ('<a href="/5.mp3" singer="陳慧琳">', '記事本', '</a>'), ('<a href="/6.mp3" singer="鄧麗君">', '但愿人長久', '</a>')]
一路上有你
滄海一聲笑
往事隨風(fēng)
光輝歲月
記事本
但愿人長久

re.sub 替換字符串中每一個匹配的子串后返回替換后的字符串

替換字符串中每一個匹配的子串后返回替換后的字符串。

import re

content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
content = re.sub('\d+', '', content)
print(content)

# Extra stings Hello  World_This is a Regex Demo Extra stings
import re

content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
content = re.sub('(\d+)', r'\1 8910', content)
print(content)

# Extra stings Hello 1234567 8910 World_This is a Regex Demo Extra stings

re.compile 將正則字符串編譯成正則表達(dá)式對象

將正則字符串編譯成正則表達(dá)式對象文章來源地址http://www.zghlxwxcb.cn/news/detail-699794.html

import re

content = '''Hello 1234567 World_This
is a Regex Demo'''
pattern = re.compile('Hello.*Demo', re.S)
result = re.match(pattern, content)
#result = re.match('Hello.*Demo', content, re.S)
print(result)

# <re.Match object; span=(0, 40), match='Hello 1234567 World_This\nis a Regex Demo'>

到了這里,關(guān)于【正則表達(dá)式】正則表達(dá)式常見匹配模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java 正則表達(dá)式匹配

    正則表達(dá)式: 定義一個搜索模式的字符串。 正則表達(dá)式可以用于搜索、編輯和操作文本。 正則對文本的分析或修改過程為:首先正則表達(dá)式應(yīng)用的是文本字符串(text/string),它會以定義的模式從左到右匹配文本,每個源字符只匹配一次。 正則表達(dá)式 匹配 this is text 精確匹配

    2024年02月06日
    瀏覽(29)
  • 正則表達(dá)式的神奇世界:表達(dá)、匹配和提取

    正則表達(dá)式,這個看起來像密林中的迷宮的工具,既神秘又令人著迷。它是編程世界中的一門魔法,有著神奇的能力。你是否曾經(jīng)在尋找或解析文本時感到束手無策?或許你想要從海量數(shù)據(jù)中提取特定信息?這正是正則表達(dá)式可以派上用場的時候。本文將帶你探索這個神奇的

    2024年02月07日
    瀏覽(35)
  • VSCode 正則表達(dá)式 匹配多行

    VSCode 正則表達(dá)式 匹配多行

    VS Code 正則表達(dá)式匹配多行 (.|n)*? 案例1: str(.|n)*?, 案例2: const(.|n)*?}$ 案例3: fn(.|n)*?},

    2024年02月02日
    瀏覽(21)
  • 【動態(tài)規(guī)劃】通配符匹配與正則表達(dá)式匹配

    【動態(tài)規(guī)劃】通配符匹配與正則表達(dá)式匹配

    題目描述: 給你一個輸入字符串 (s) 和一個字符模式 § ,請你實現(xiàn)一個支持 ‘?’ 和 ‘*’ 匹配規(guī)則的通配符匹配: ‘?’ 可以匹配任何單個字符。 ‘*’ 可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要條件是:字符模式必須能夠 完全匹配 輸入字符串(而

    2024年02月07日
    瀏覽(36)
  • 詳解正則表達(dá)式匹配方法 match()

    詳解正則表達(dá)式匹配方法 match()

    在前端開發(fā)中,正則表達(dá)式是一大利器。所以我們這次就來討論下match()方法。 match本身是JavaScript語言中字符串對象的一個方法,該方法的簽名是 match([string] | [RegExp]) 它的參數(shù)既可以是一個字符串,也可以是一個正則表達(dá)式。該方法絕大多數(shù)都是要使用正則表達(dá)式的,所以參

    2024年02月11日
    瀏覽(19)
  • 正則表達(dá)式的匹配(py編程)

    1. 匹配單個字符 在上一小節(jié)中,了解到通過re模塊能夠完成使用正則表達(dá)式來匹配字符串 本小節(jié),將要講解正則表達(dá)式的單字符匹配 代碼 功能 . 匹配任意1個字符(除了n) [ ] 匹配[ ]中列舉的字符 d 匹配數(shù)字,即0-9 D 匹配非數(shù)字,即不是數(shù)字 s 匹配空白,即 空格,tab鍵

    2024年02月02日
    瀏覽(23)
  • 劍指 Offer 19. 正則表達(dá)式匹配

    劍指 Offer 19. 正則表達(dá)式匹配 初始化要考慮主串為空字符串,模式串為 a*b*c* 的形式。 一般情況時,根據(jù)模式串是 普通字符 、 \\\'.\\\' 、 \\\'*\\\' 分情況考慮。為 \\\'*\\\' 時,考慮 匹配0次 和 匹配多次 的情況,匹配多次時要注意判斷前提是能匹配。

    2024年02月09日
    瀏覽(25)
  • 正則表達(dá)式包含數(shù)字和字符匹配

    正則表達(dá)式包含數(shù)字和字符匹配

    至少6位。 pattern : (?=. [0-9])(?=. [A-Za-z])[0-9A-Za-z]{6,} 正則表達(dá)式中的“?=”是一個正向預(yù)查字符,它的意思是匹配前一個字符出現(xiàn)的最少一次。具體來說,當(dāng)一個匹配出現(xiàn)時,它會檢查前一個字符是否符合要求,如果符合,則繼續(xù)匹配下一個字符,否則停止匹配。

    2024年02月06日
    瀏覽(35)
  • 【編譯原理】【詞法分析】【正則表達(dá)式】【NFA】【DFA】【C++】正則表達(dá)式轉(zhuǎn)DFA&NFA,判斷字符串是否符合正則表達(dá)式的匹配算法

    【編譯原理】【詞法分析】【正則表達(dá)式】【NFA】【DFA】【C++】正則表達(dá)式轉(zhuǎn)DFA&NFA,判斷字符串是否符合正則表達(dá)式的匹配算法

    顯然,正則表達(dá)式、NFA、DFA的概念都很簡單,所以直接上代碼,注釋應(yīng)該解釋地比較清楚, 沒有萬能頭文件的自行替換需求庫 ,如果有疑問的可以留言。 網(wǎng)盤鏈接 [自行補全]/s/1pbGT_wpB662TwFrnukXgGQ?pwd=TSIT 提取碼:TSIT 原理可以參考這篇博客 傳送門 本次程序由四個文件組成 文

    2024年02月11日
    瀏覽(35)
  • 【算法Hot100系列】正則表達(dá)式匹配

    【算法Hot100系列】正則表達(dá)式匹配

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月03日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包