亚洲综合在线播放_国产精品视频网址_国产欧美中文在线_色综合咪咪久久_日韩成人av影视_精品综合久久久久久97_国产美女视频91_久久亚洲精品网站_狠狠色丁香婷婷综合久久片_亚洲人成在线观看

網(wǎng)站優(yōu)化技術(shù)

揭開正則表達(dá)式的神秘面紗

發(fā)布于:
最后更新時(shí)間:
熱度:212

[原創(chuàng)文章,轉(zhuǎn)載請(qǐng)保留或注明出處:http://www.regexlab.com/zh/regref.htm]

引言

正則表達(dá)式(regular expression)作為一種強(qiáng)大的字符串匹配工具,其核心在于定義特定模式,以實(shí)現(xiàn)兩大核心功能:其一,檢測(cè)字符串中是否存在符合規(guī)則的子串,并精準(zhǔn)定位該子串的內(nèi)容與位置;其二,依據(jù)匹配規(guī)則對(duì)字符串進(jìn)行靈活的替換操作,極大提升文本處理的效率。

正則表達(dá)式的學(xué)習(xí)門檻遠(yuǎn)低于大眾認(rèn)知,其核心概念抽象性有限,易于理解。然而,多數(shù)學(xué)習(xí)者感到困惑的根源往往在于兩方面:部分教學(xué)文檔未能遵循由淺入深的邏輯順序,概念講解缺乏條理性,導(dǎo)致讀者理解障礙;各引擎自帶文檔常側(cè)重介紹其特有功能,而這類非通用特性并非初學(xué)者優(yōu)先掌握的重點(diǎn)。本文將通過實(shí)例演示與交互式測(cè)試(文中每個(gè)舉例均可點(diǎn)擊進(jìn)入測(cè)試頁(yè)面),系統(tǒng)化梳理正則表達(dá)式的知識(shí)體系,助力讀者快速掌握其精髓。

1. 正則表達(dá)式規(guī)則

1.1 普通字符

普通字符包括字母、數(shù)字、漢字、下劃線,以及未在后續(xù)章節(jié)中被賦予特殊含義的標(biāo)點(diǎn)符號(hào)。在匹配過程中,普通字符需與目標(biāo)字符串中的字符完全一致方可實(shí)現(xiàn)匹配。例如,表達(dá)式“c”在匹配字符串“abcde”時(shí),成功匹配到字符“c”,其位置為索引2至3(注:索引起始值因編程語(yǔ)言而異);而表達(dá)式“bcd”在匹配同一字符串時(shí),則成功匹配子串“bcd”,位置為索引1至4。

1.2 簡(jiǎn)單的轉(zhuǎn)義字符

部分難以直接書寫的字符需通過轉(zhuǎn)義符號(hào)“\”進(jìn)行表示,這些字符均為開發(fā)者所熟知的控制字符。具體而言:

- `\r`與`\n`分別代表回車符與換行符;

- `\t`代表制表符;

- `\\`代表反斜杠“\”本身。

部分標(biāo)點(diǎn)符號(hào)在正則表達(dá)式中具有特殊含義(如`^`、`$`),若需匹配其字面值,需在符號(hào)前添加“\”。例如:

- `\^`匹配“^”字符本身;

- `\$`匹配“$”字符本身;

- `\.`匹配小數(shù)點(diǎn)“.”本身。

此類轉(zhuǎn)義字符的匹配邏輯與普通字符一致,均要求與目標(biāo)字符完全對(duì)應(yīng)。例如,表達(dá)式`\$d`在匹配字符串“abc$de”時(shí),成功匹配子串“$d”,位置為索引3至5。

1.3 能夠與“多種字符”匹配的表達(dá)式

正則表達(dá)式通過特定元字符實(shí)現(xiàn)“匹配任意一個(gè)字符”的靈活功能,此類元字符雖能匹配多種字符之一,但每次僅匹配單個(gè)字符,類似于撲克牌中“萬能牌”的使用邏輯。常用元字符包括:

- `\d`:匹配任意數(shù)字(0-9);

- `\w`:匹配任意字母、數(shù)字或下劃線(A-Z、a-z、0-9、_);

- `\s`:匹配任意空白字符(如空格、制表符、換頁(yè)符);

- `.`:匹配除換行符(`\n`)外的任意字符。

例如,表達(dá)式`\d\d`在匹配字符串“abc123”時(shí),成功匹配子串“12”,位置為索引3至5;表達(dá)式`a.\d`在匹配“aaa100”時(shí),匹配到“aa1”,位置為索引1至4。

1.4 自定義能夠匹配“多種字符”的表達(dá)式

方括號(hào)`[]`提供了自定義字符集匹配的功能:`[字符序列]`匹配序列中的任意一個(gè)字符,而`[^字符序列]`則匹配序列外的任意一個(gè)字符。需注意的是,此類匹配同樣限定為單字符。例如:

- `[ab5@]`匹配“a”“b”“5”“@”中的任意一個(gè);

- `[^abc]`匹配非“a”“b”“c”的任意字符;

- `[f-k]`匹配“f”至“k”范圍內(nèi)的任意小寫字母;

- `[^A-F0-3]`匹配非“A”至“F”且非“0”至“3”的任意字符。

舉例而言,表達(dá)式`[bcd][bcd]`在匹配“abc123”時(shí),成功匹配“bc”,位置為索引1至3;表達(dá)式`[^abc]`在匹配同一字符串時(shí),匹配到“1”,位置為索引3至4。

1.5 修飾匹配次數(shù)的特殊符號(hào)

為避免重復(fù)書寫表達(dá)式,正則表達(dá)式引入了修飾匹配次數(shù)的元符號(hào),此類符號(hào)置于被修飾表達(dá)式之后,實(shí)現(xiàn)重復(fù)匹配功能。常用符號(hào)包括:

- `{n}`:表達(dá)式重復(fù)n次(如`\w{2}`等價(jià)于`\w\w`);

- `{m,n}`:表達(dá)式重復(fù)m至n次(如`ba{1,3}`匹配“ba”“baa”“baaa”);

- `{m,}`:表達(dá)式至少重復(fù)m次(如`\w\d{2,}`匹配“a12”“_456”等);

- `?`:匹配0次或1次(等價(jià)于`{0,1}`,如`a[cd]?`匹配“a”“ac”“ad”);

- `+`:至少匹配1次(等價(jià)于`{1,}`,如`a+b`匹配“ab”“aab”等);

- ``:匹配0次或任意次(等價(jià)于`{0,}`,如`\^b`匹配“b”“^^^b”等)。

例如,表達(dá)式`\d+\.?\d`在匹配“It costs $12.5”時(shí),成功匹配“12.5”,位置為索引10至14;表達(dá)式`go{2,8}gle`在匹配“Ads by goooooogle”時(shí),匹配到“goooooogle”,位置為索引7至17。

1.6 其他一些代表抽象意義的特殊符號(hào)

部分符號(hào)在表達(dá)式中具有抽象的定位或邏輯功能:

- `^`:匹配字符串開頭位置(不匹配字符);

- `$`:匹配字符串結(jié)尾位置(不匹配字符);

- `\b`:匹配單詞邊界(單詞與空格之間的位置,不匹配字符);

- `|`:實(shí)現(xiàn)“或”邏輯(匹配左側(cè)或右側(cè)表達(dá)式);

- `( )`:作用包括:① 作為整體被修飾次數(shù)修飾;② 提取子匹配結(jié)果。

舉例說明:表達(dá)式`^aaa`僅匹配字符串開頭的“aaa”(如“aaa xxx xxx”),在“xxx aaa xxx”中匹配失敗;表達(dá)式`\bend\b`在“weekend,endfor,end”中僅匹配最后一個(gè)“end”(位置索引15至18);表達(dá)式`Tom|Jack`在“I'm Tom, he is Jack”中先后匹配“Tom”與“Jack”;表達(dá)式`¥(\d+\.?\d)`在匹配“$10.9,¥20.5”時(shí),可提取子匹配結(jié)果“20.5”。

2. 正則表達(dá)式中的一些高級(jí)規(guī)則

2.1 匹配次數(shù)中的貪婪與非貪婪

默認(rèn)情況下,修飾匹配次數(shù)的符號(hào)(如`{m,n}`、``、`+`等)采用“貪婪模式”,即盡可能多地匹配字符。例如,表達(dá)式`(d)(\w+)`在匹配“dxxxdxxxd”時(shí),`\w+`會(huì)匹配“xxxdxxxd”;而表達(dá)式`(d)(\w+)(d)`中,`\w+`為使整體匹配成功,會(huì)“讓出”最后一個(gè)“d”,匹配“xxxdxxx”。

“非貪婪模式”(或稱“勉強(qiáng)模式”)通過在修飾符號(hào)后添加`?`實(shí)現(xiàn),此時(shí)表達(dá)式會(huì)盡可能少地匹配字符。例如,表達(dá)式`(d)(\w+?)`在匹配“dxxxdxxxd”時(shí),`\w+?`僅匹配第一個(gè)“x”;表達(dá)式`(.?)`在匹配`aa bb`時(shí),會(huì)分別匹配兩個(gè)``標(biāo)簽內(nèi)的內(nèi)容,而非貪婪地匹配整個(gè)字符串。

2.2 反向引用

正則表達(dá)式引擎會(huì)記錄括號(hào)`()`內(nèi)子表達(dá)式匹配的內(nèi)容,并在后續(xù)匹配中通過`\數(shù)字`引用。例如:

- 表達(dá)式`('|")(.?)\1`在匹配` 'Hello', "World" `時(shí),`\1`引用第一個(gè)括號(hào)匹配的`'`或`"`,確保引號(hào)配對(duì);

- 表達(dá)式`(\w)\1{4,}`匹配“aa bbbb abcdefg ccccc 111121111 999999999”時(shí),`\1`引用第一個(gè)`\w`匹配的字符,匹配“ccccc”與“999999999”(要求同一字符重復(fù)至少5次)。

2.3 預(yù)搜索與反向預(yù)搜索

預(yù)搜索(正向與反向)用于對(duì)“字符縫隙”附加條件,但不匹配字符本身:

- 正向預(yù)搜索`(?=xxxxx)`:要求右側(cè)匹配`xxxxx`,如`Windows (?=NT|XP)`僅匹配“Windows NT”中的“Windows ”;

- 正向否定預(yù)搜索`(?!xxxxx)`:要求右側(cè)不匹配`xxxxx`,如`do(?!\w)`匹配“done, do, dog”中的“do”(后跟非單詞字符);

- 反向預(yù)搜索`(?<=xxxxx)`:要求左側(cè)匹配`xxxxx`,如`(?<=\d{4})\d+(?=\d{4})`匹配“1234567890123456”中間8位數(shù)字;

- 反向否定預(yù)搜索`(?

3. 其他通用規(guī)則

3.1 字符表示法

- `\xXX`:表示0-255范圍內(nèi)的字符(如`\x20`表示空格);

- `\uXXXX`:通過Unicode編碼表示任意字符(如`\u4E2D`表示“中”)。

3.2 大寫字母表示相反意義

- `\S`:非空白字符(`\s`的相反);

- `\D`:非數(shù)字字符(`\d`的相反);

- `\W`:非字母、數(shù)字、下劃線字符(`\w`的相反);

- `\B`:非單詞邊界(`\b`的相反)。

3.3 特殊字符的字面值匹配

需通過`\`轉(zhuǎn)義的字符包括:`^`、`$`、`( )`、`[ ]`、`{ }`、`.`、`?`、`+`、``、`|`。

3.4 非捕獲分組

`(?:xxxxx)`表示括號(hào)內(nèi)表達(dá)式不記錄匹配結(jié)果,如表達(dá)式`(?:(\w)\1)+`匹配“a bbccdd efg”時(shí),“(?:)”內(nèi)的`\w`匹配結(jié)果不被記錄,`\1`仍可引用外層括號(hào)內(nèi)容。

3.5 常用表達(dá)式屬性

- `Ignorecase`:忽略大小寫;

- `Singleline`:`.`匹配包括換行符在內(nèi)的所有字符;

- `Multiline`:`^`與`$`匹配每行開頭與結(jié)尾;

- `Global`:替換所有匹配項(xiàng)(而非僅第一個(gè))。

4. 綜合提示

- 完整匹配:使用`^`與`$`確保匹配整個(gè)字符串(如`^\d+$`匹配純數(shù)字字符串);

- 完整單詞匹配:使用`\b`(如`\b(if|while|else)\b`匹配程序關(guān)鍵詞);

- 避免空字符串匹配:如匹配“123”“123.”“123.5”“.5”時(shí),避免`\d\.?\d`(可匹配空),改用`\d+\.?\d|\.\d+`;

- 防止死循環(huán):避免“可匹配0次的子表達(dá)式+無限次修飾”(如`(\d)`可能導(dǎo)致引擎死循環(huán));

- 合理選擇貪婪/非貪婪模式:根據(jù)需求平衡匹配精度與效率;

- 優(yōu)化“或”邏輯:確保`|`兩側(cè)表達(dá)式對(duì)同一字符的匹配范圍互斥,避免結(jié)果因順序變化而不同。

最新資訊

為您推薦

反向引用相關(guān)資訊

聯(lián)系上海網(wǎng)站優(yōu)化公司

上海網(wǎng)站優(yōu)化公司QQ
上海網(wǎng)站優(yōu)化公司微信
添加微信
国产精品理论片在线观看| 性欧美在线看片a免费观看| 亚洲欧美韩国| 免费在线欧美视频| 国产精品专区第二| 日韩视频不卡中文| 久久激情五月激情| 欧美视频不卡| 在线日韩av片| 欧美一级大片在线免费观看| 欧美久久成人| 在线观看精品一区| 香蕉久久一区二区不卡无毒影院 | 欧美性生交xxxxx久久久| 在线观看日韩欧美| 欧美一二三视频| 欧美视频在线观看| 亚洲国产岛国毛片在线| 欧美中文字幕视频| 国产精品久久国产三级国电话系列 | 亚洲视频中文| 欧美国产一区二区在线观看| 国产专区欧美精品| 午夜精品久久久久久99热软件| 欧美激情二区三区| 亚洲第一在线综合网站| 久久精品国产第一区二区三区最新章节| 欧美特黄一区| 日韩视频免费观看| 欧美~级网站不卡| 精品不卡一区二区三区| 欧美中文在线观看| 国产精品一区在线观看| 亚洲网址在线| 欧美三区在线观看| 日韩亚洲欧美一区二区三区| 欧美激情综合在线| 亚洲片在线资源| 免费欧美日韩| 在线日韩视频| 猫咪成人在线观看| 亚洲高清在线| 免费观看成人鲁鲁鲁鲁鲁视频| 在线观看日韩av| 久久精品亚洲热| 国产亚洲成人一区| 性感少妇一区| 国产私拍一区| 久久er精品视频| 国产一区在线视频| 久久成人精品无人区| 国产亚洲va综合人人澡精品| 久久成人人人人精品欧| 国产性猛交xxxx免费看久久| 欧美一区二区三区视频免费| 国产欧美日韩综合| 久久av一区二区三区| 国内外成人在线| 久久久之久亚州精品露出| 激情久久久久| 免费亚洲一区二区| 亚洲日本va午夜在线影院| 欧美激情四色| 一区二区三区产品免费精品久久75| 欧美日韩高清在线播放| 一区二区欧美亚洲| 国产精品mv在线观看| 亚洲综合色网站| 国产欧美日韩在线 | 一区二区三区在线视频免费观看| 久久久久国产精品麻豆ai换脸| 精品成人a区在线观看| 免费永久网站黄欧美| 亚洲精品一区二区三区四区高清| 欧美日韩综合网| 午夜精品亚洲| 国语自产偷拍精品视频偷| 另类综合日韩欧美亚洲| 亚洲精品美女在线| 欧美性感一类影片在线播放 | 国产精品免费区二区三区观看| 欧美一级二区| 亚洲国产精品成人综合| 欧美剧在线免费观看网站| 亚洲午夜国产成人av电影男同| 国产精品视频久久| 久久人体大胆视频| 亚洲精品乱码久久久久久黑人| 欧美日韩在线看| 翔田千里一区二区| 在线成人www免费观看视频| 欧美久久久久免费| 欧美一区二区视频观看视频| 亚洲电影在线看| 欧美无砖砖区免费| 久久精品国产一区二区三区| 亚洲国产一区在线观看| 国产精品乱看| 另类激情亚洲| 亚洲无毛电影| 一区二区亚洲| 欧美性猛交一区二区三区精品| 欧美一区二区三区播放老司机| 亚洲国产1区| 国产精品红桃| 麻豆成人综合网| 亚洲已满18点击进入久久 | 欧美激情第9页| 午夜一区二区三区在线观看 | 欧美日韩国产成人在线91| 欧美亚洲网站| 亚洲乱码久久| 国内精品久久久| 欧美午夜精品一区| 狂野欧美激情性xxxx欧美| 亚洲五月婷婷| 亚洲电影在线| 国产三级欧美三级日产三级99| 欧美电影在线| 久久国产精品久久久| 99re热这里只有精品视频| 韩国三级电影一区二区| 欧美午夜寂寞影院| 免费成人激情视频| 欧美一区二区三区久久精品茉莉花 | 午夜精品视频在线观看一区二区| 亚洲经典视频在线观看| 国产日韩亚洲欧美精品| 欧美日韩国产黄| 久久亚洲一区| 欧美亚洲一区| 一区二区三欧美| 亚洲韩国青草视频| 国产在线精品成人一区二区三区| 欧美日韩一区二区视频在线| 久久综合狠狠| 欧美资源在线| 亚洲男同1069视频| 99riav国产精品| 亚洲电影免费在线| 狠狠色2019综合网| 国产精品网站视频| 欧美视频日韩视频在线观看| 欧美成年人在线观看| 久久久久国产一区二区三区| 午夜精品www| 亚洲性夜色噜噜噜7777| 日韩视频不卡| 亚洲欧洲精品天堂一级| 激情视频亚洲| 国产综合自拍| 国产亚洲aⅴaaaaaa毛片| 国产精品国产三级国产专播精品人 | 黄色成人在线网站| 国产欧美在线播放| 国产精品美女主播在线观看纯欲| 欧美日韩视频在线一区二区| 欧美激情第一页xxx| 美女网站久久| 久久一区二区三区av| 久久狠狠亚洲综合| 欧美在线看片| 欧美一区二区三区成人| 亚洲欧美日韩国产综合精品二区 | 国产偷国产偷精品高清尤物| 国产精品捆绑调教| 国产精品国产三级国产专播精品人| 欧美精品一区二区三区四区| 欧美福利视频在线| 欧美韩国日本一区| 欧美国产日韩xxxxx| 欧美国产精品中文字幕| 欧美成人高清| 欧美国产欧美综合| 欧美电影免费观看高清| 欧美成人中文| 欧美精品在线看| 欧美激情在线有限公司| 欧美日产在线观看| 欧美日本精品| 欧美日韩视频不卡| 欧美日韩三级| 国产精品国产三级国产普通话蜜臀| 国产精品大片| 国产精品视频免费观看www| 国产精品专区h在线观看| 国产亚洲精久久久久久| 国产最新精品精品你懂的| 黄色亚洲网站| 91久久夜色精品国产九色| 亚洲毛片在线看| 亚洲特级片在线| 亚洲在线日韩| 欧美在线一区二区| 美国十次成人| 欧美日韩第一区| 国产精品美女999| 国产一区深夜福利| 亚洲国产成人av| 日韩一区二区精品葵司在线|