日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

正则表达式的学习二:正则表达式的匹配规则总结

發(fā)布時(shí)間:2025/7/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式的学习二:正则表达式的匹配规则总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、^ 和 $ 的匹配

^once:這個(gè)模式包含一個(gè)特殊的字符^,表示該模式只匹配那些以once開頭的字符串;buct$: 這個(gè)模式包含了$, 表示該模式只匹配以buct結(jié)尾的字符串;^buctser$: 這個(gè)模式包含了^$,所以該模式只匹配“buctser” 這一個(gè)值了。

once : 如果既不包含 又不包含 ,那么只要含有once中的元素的都是符合的。例如: Who kept all of his cash in a bucket. (o-n-c-e)四個(gè)元素都有,所以符合匹配規(guī)則。

二、* ?+ ?? 的匹配 --限定字符

? ?上面四種都是限定符,在表達(dá)式中控制字符出現(xiàn)的次數(shù)。例如

o*: 表示o在匹配對(duì)象中出現(xiàn)0次或者多次 o+:表示o在匹配對(duì)象中出現(xiàn)1次或者多次 o?:表示o在匹配對(duì)象中出現(xiàn)0次或者1次

注意*、+和?限定符都是貪婪的,因?yàn)樗鼈儠?huì)盡可能多的匹配文字,只有在它們的后面加上一個(gè)?就可以實(shí)現(xiàn)非貪婪或最小匹配。

例如: ?o+?:只匹配單個(gè)o.

三、[]的匹配

若要?jiǎng)?chuàng)建匹配字符組的一個(gè)列表,請(qǐng)?jiān)诜嚼ㄌ?hào)([ 和 ])內(nèi)放置一個(gè)或更多單個(gè)字符。當(dāng)字符括在中括號(hào)內(nèi)時(shí),該列表稱為"中括號(hào)表達(dá)式"。與在任何別的位置一樣,普通字符在中括號(hào)內(nèi)表示其本身,即,它在輸入文本中匹配一次其本身。大多數(shù)特殊字符在中括號(hào)表達(dá)式內(nèi)出現(xiàn)時(shí)失去它們的意義。不過(guò)也有一些例外,如:

  • 如果 ] 字符不是第一項(xiàng),它結(jié)束一個(gè)列表。若要匹配列表中的 ] 字符,請(qǐng)將它放在第一位,緊跟在開始 [ 后面。
  • \ 字符繼續(xù)作為轉(zhuǎn)義符。若要匹配 \ 字符,請(qǐng)使用 \\。

括在中括號(hào)表達(dá)式中的字符只匹配處于正則表達(dá)式中該位置的單個(gè)字符。以下正則表達(dá)式匹配 Chapter 1、Chapter 2、Chapter 3、Chapter 4 和 Chapter 5:

/Chapter [12345]/

?

四、替換和分組

替換使用 | 字符來(lái)允許在兩個(gè)或多個(gè)替換選項(xiàng)之間進(jìn)行選擇。例如,可以擴(kuò)展章節(jié)標(biāo)題正則表達(dá)式,以返回比章標(biāo)題范圍更廣的匹配項(xiàng)。但是,這并不象您可能認(rèn)為的那樣簡(jiǎn)單。替換匹配 | 字符任一側(cè)最大的表達(dá)式。

您可能認(rèn)為,下面的表達(dá)式匹配出現(xiàn)在行首和行尾、后面跟一個(gè)或兩個(gè)數(shù)字的 Chapter 或 Section:

/^Chapter|Section [1-9][0-9]{0,1}$/

很遺憾,上面的正則表達(dá)式要么匹配行首的單詞 Chapter,要么匹配行尾的單詞 Section 及跟在其后的任何數(shù)字。如果輸入字符串是 Chapter 22,那么上面的表達(dá)式只匹配單詞 Chapter。如果輸入字符串是 Section 22,那么該表達(dá)式匹配 Section 22。

若要使正則表達(dá)式更易于控制,可以使用括號(hào)來(lái)限制替換的范圍,即,確保它只應(yīng)用于兩個(gè)單詞 Chapter 和 Section。但是,括號(hào)也用于創(chuàng)建子表達(dá)式,并可能捕獲它們以供以后使用,這一點(diǎn)在有關(guān)反向引用的那一節(jié)講述。通過(guò)在上面的正則表達(dá)式的適當(dāng)位置添加括號(hào),就可以使該正則表達(dá)式匹配 Chapter 1 或 Section 3。

下面的正則表達(dá)式使用括號(hào)來(lái)組合 Chapter 和 Section,以便表達(dá)式正確地起作用:

/^(Chapter|Section) [1-9][0-9]{0,1}$/

盡管這些表達(dá)式正常工作,但 Chapter|Section 周圍的括號(hào)還將捕獲兩個(gè)匹配字中的任一個(gè)供以后使用。由于在上面的表達(dá)式中只有一組括號(hào),因此,只有一個(gè)被捕獲的"子匹配項(xiàng)"。

在上面的示例中,您只需要使用括號(hào)來(lái)組合單詞 Chapter 和 Section 之間的選擇。若要防止匹配被保存以備將來(lái)使用,請(qǐng)?jiān)诶ㄌ?hào)內(nèi)正則表達(dá)式模式之前放置 ?:。下面的修改提供相同的能力而不保存子匹配項(xiàng):

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

除 ?: 元字符外,兩個(gè)其他非捕獲元字符創(chuàng)建被稱為"預(yù)測(cè)先行"匹配的某些內(nèi)容。正向預(yù)測(cè)先行使用 ?= 指定,它匹配處于括號(hào)中匹配正則表達(dá)式模式的起始點(diǎn)的搜索字符串。反向預(yù)測(cè)先行使用 ?! 指定,它匹配處于與正則表達(dá)式模式不匹配的字符串的起始點(diǎn)的搜索字符串。

例如,假設(shè)您有一個(gè)文檔,該文檔包含指向 Windows 3.1、Windows 95、Windows 98 和 Windows NT 的引用。再進(jìn)一步假設(shè),您需要更新該文檔,將指向 Windows 95、Windows 98 和 Windows NT 的所有引用更改為 Windows 2000。下面的正則表達(dá)式(這是一個(gè)正向預(yù)測(cè)先行的示例)匹配 Windows 95、Windows 98 和 Windows NT:

/Windows(?=95 |98 |NT )/

找到一處匹配后,緊接著就在匹配的文本(不包括預(yù)測(cè)先行中的字符)之后搜索下一處匹配。例如,如果上面的表達(dá)式匹配 Windows 98,將在 Windows 之后而不是在 98 之后繼續(xù)搜索。

五、特殊例子

正則表達(dá)式描述
/\b([a-z]+) \1\b/gi一個(gè)單詞連續(xù)出現(xiàn)的位置。
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/將一個(gè)URL解析為協(xié)議、域、端口及相對(duì)路徑。
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/定位章節(jié)的位置。
/[-a-z]/A至z共26個(gè)字母再加一個(gè)-號(hào)。
/ter\b/可匹配chapter,而不能匹配terminal。
/\Bapt/可匹配chapter,而不能匹配aptitude。
/Windows(?=95 |98 |NT )/可匹配Windows95或Windows98或WindowsNT,當(dāng)找到一個(gè)匹配后,從Windows后面開始進(jìn)行下一次的檢索匹配。
/^\s*$/匹配空行。
/\d{2}-\d{5}/驗(yàn)證由兩位數(shù)字、一個(gè)連字符再加 5 位數(shù)字組成的 ID 號(hào)。
/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/匹配 HTML 標(biāo)記。

轉(zhuǎn)載于:https://www.cnblogs.com/renxiaoren/p/5315662.html

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的正则表达式的学习二:正则表达式的匹配规则总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。