正規表示式(2)

2022-03-11 12:02:44 字數 1622 閱讀 7532

重點篇

一、正規表示式-單行與多行模式

補充:.點

匹配除「\r\n」之外的任何單個字元。要匹配包括「\r\n」在內的任何字元,請使用像「[\s\s]」的模式。

^ 可以匹配字串開頭(字串的開始位置),也可以匹配行的開頭(即換行符\n之後的位置) $ 可以匹配字串結尾(字串的結束位置), 也可以匹配行的結尾(即換行符\n之前的位置)

^ 只能匹配字串開頭 $ 只能匹配字串結尾

正規表示式:(?m)^\d\w+(\r)(\n)

例:abcde

結果:abcde

在windows作業系統中其實是:ab[cr][lf]cd[cr][lf]e

從**上獲取的html原始碼,極少有不換行的。這時候單行模式派上用場了,它可以改變點符號的意義。

1.單行模式的嵌入修飾符:

我們可以直接在正規表示式中嵌入單行模式:

(?s).*

(?s)修飾符說明,其後面的表示式採用單行模式。所以使用時請不要將它放在末尾。另外可以使用(?-s)關閉單行模式。

2. 多行模式(multiline)

msdn定義:更改 ^ 和 $ 的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字串的開頭和結尾匹配。

定義影響的表示式

regexoptions列舉

嵌入識別符號

單行模式

更改點 (.) 的含義,使它與每乙個字元匹配(而不是與除 \n 之外的每個字元匹配)。

.singleline

(?s)

多行模式

更改 ^ 和 $ 的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字串的開頭和結尾匹配。

^$multiline

(?m)

忽略大小寫

指定不區分大小寫的匹配。

ignorecase

(?i)

二.貪婪匹配

什麼是貪婪匹配和非貪婪匹配

貪婪匹配:正規表示式一般趨向於最大長度匹配,也就是所謂的貪婪匹配。如上面使用模式p匹配字串str,結果就是匹配到:abcaxc(ab*c)。

非貪婪匹配:就是匹配到結果就好,就少的匹配字元。如上面使用模式p匹配字串str,結果就是匹配到:abc(ab*c)。

程式設計中如何區分兩種模式:預設是貪婪模式;在量詞後面直接加上乙個問號?就是非貪婪模式。

表1.懶惰限定符

**/語法

說明*?

重複任意次,但盡可能少重複

+?重複1次或更多次,但盡可能少重複

??重複0次或1次,但盡可能少重複

?重複n到m次,但盡可能少重複

?重複n次以上,但盡可能少重複  

正規表示式一:.*

匹配結果一:test1

bbtest2

正規表示式二:.*?

匹配結果二:test1

(這裡指的是一次匹配結果,所以沒包括test2

)**大神的例子

知識點:

單行與多行模式與非貪婪匹配

貪婪匹配

正規表示式 2

例 正規表示式物件 本物件包含正規表示式模式以及表明如何應用模式的標誌。語法 1 re pattern flags 語法 2 re new regexp pattern flags 引數 re 必選項。將要賦值為正規表示式模式的變數名。pattern 必選項。要使用的正規表示式模式。如果使用語法 1...

正規表示式2

本文參照python 核心程式設計第一章正規表示式 1 match函式的使用 import re m re.match foo foo if m is not none print m.group match 如果匹配成功,返回乙個匹配物件,不成功則返回none 如果我們不使用if判斷就使用m.gr...

正規表示式2

4.2字元集合var reg 1a2b3 匹配乙個字元,這個字元必須是 1 a 2 b 3其中一種,如果是就表示滿足,如果不是就不滿足 reg.test a 結果為 true reg.test 3 結果為 true reg.test fg56 乙個符合要求的字元都不存在,結果為 false reg....