正規表示式基礎語法例子

2021-08-08 12:15:02 字數 4747 閱讀 4089

功能:匹配文字字串的字面值 literal

例子:foo

功能:匹配正規表示式 re1 或者 re2

例子:foo|bar

功能:匹配任何字元(除了\n 之外)

例子:

表示式:f.o

匹配:在字母「f」和「o」之間的任意乙個字元;例如 fao、f9o、f#o 等

表示式:..

匹配:任意兩個字元

功能:匹配字串起始部分

例子:

表示式:^from

匹配:任何以 from 作為起始的字串

功能:匹配字串終止部分

例子:

表示式:/bin/*sh$

匹配:任何以/bin/tcsh 作為結尾的字串

功能:匹配 0 次或者多次前面出現的正規表示式

例子:

表示式:5*

匹配:5 或 555 或 沒有5

功能:匹配 1 次或者多次前面出現的正規表示式

例子:

表示式:[a-z]+\.com

匹配:a.com 或 abc.com

不匹配:.com

功能:匹配 0 次或者 1 次前面出現的正規表示式

例子:

表示式:goo?

匹配:goo 或 gooo

不匹配:goooo

功能:匹配 n 次前面出現的正規表示式

例子:

表示式:[0-9]

匹配:123 或 999

不匹配:1234 或 12

功能:匹配 m~n 次前面出現的正規表示式

表示式:[0-9]

匹配:1 或 12 或 123

不匹配:1234

功能:匹配來自字符集的任意單一字元

例子:

表示式:[aeiou]

匹配:a 或 e 或 i 或 o 或 u

不匹配:f 或 s 等

功能:匹配 x~y 範圍中的任意單一字元

例子:

表示式:[0-9]

匹配:1 或 5 或 8 (0到9之間的單個數字)

不匹配:a

表示式:[a-za-z]

匹配:a, f, h

不匹配:5

功能:不匹配此字符集中出現的任何乙個字元,包括某一範圍的字元(如果在此字符集中出現)

例子:

表示式:[^aeiou]good

匹配:sgood

不匹配:agood 或 egood

功能:用於匹配上面頻繁出現/重複出現符號的非貪婪版本(*、+、?、{})

解釋:貪婪模式:就是在整個表示式匹配成功的前提下,盡可能多的匹配,也就是所謂的「貪婪」,通俗點講,就是看到想要的,有多少就撿多少,除非再也沒有想要的了。

非貪婪模式:就是在整個表示式匹配成功的前提下,盡可能少的匹配,也就是所謂的「非貪婪」,通俗點講,就是找到乙個想要的撿起來就行了,至於還有沒有沒撿的就不管了。

例子:

字串:'thu feb 15 17:46:04 2007::[email protected]::1171590364-6-8'

表示式:.+(\d+-\d+-\d+)

結果:match 1

full match 0-61 `thu feb 15 17:46:04 2007::[email protected]::1171590364-6-8`

group 1. 56-61 `4-6-8`

(group1 匹配到的是`4-6-8`)

表示式:.+?(\d+-\d+-\d+) # 注意,在加號後面,加了"?"

結果:match 1

full match 0-61 `thu feb 15 17:46:04 2007::[email protected]::1171590364-6-8`

group 1. 47-61 `1171590364-6-8`

(group1 匹配到的是`1171590364-6-8`)

字串:aatest1

bbtest2

cc表示式:.*

結果:test1

bbtest2

表示式:.*?

結果:test1

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

功能:匹配封閉的正規表示式,然後另存為子組

例子:([0-9])?,f(oo|u)bar

功能:匹配任何十進位制數字,與[0-9]一致(\d 與\d 相反,不匹配任何非數值型的數字)

例子:data\d+.txt

功能:匹配任何字母數字字元,與[a-za-z0-9_]相同(\w 與之相反)

例子:[a-za-z_]\w+

功能:匹配任何空格字元,與[\n\t\r\v\f]相同(\s 與之相反)

例子:of\sthe

功能:匹配任何單詞邊界(\b 與之相反)

例子:

表示式:\bthe\b

意思:僅僅匹配單詞 the。

匹配:"a the b"

不區別:"fathe"

表示式:\bthe

意思:任何包含但並不以 the 作為起始的字串。

匹配:"fathe"

不區別:"a the b"

功能:匹配已儲存的子組 n(參見上面的(…))

例子:price: \16

功能:轉義表示式用字元

例子:

表示式:data\.txt

匹配:data.txt

功能:匹配字串的起始(結束)(另見上面介紹的^和$)

例子:\adear

功能:此處並不做匹配,只是作為注釋

(沒看到**用過)

解釋如果表示式為「(?=.com)」,意思是:乙個字串後面跟著「.com」才做匹配操作,並不使用任何目標字串

解釋如果表示式為「(?!.net)」,意思是:乙個字串後面不是跟著「.net」才做匹配操作

解釋如果表示式為「(?<=800-)」,意思是:字串之前為「800-」才做匹配,假定為**號碼,同樣,並不使用任何輸入字串

解釋功能

表示乙個匹配不用儲存的分組。

解釋當表示式中有圓括號「()」出現時,表示把匹配「()」內規則的字串,儲存成乙個分組。儲存成分組後,就可以使用 result.group(1) 來訪問這個分組。當有多個分組時,就可以使用 result.group(n) 來訪問第n個分組。

在分組內加「?:」的話(例如:(?:a) ),就表示匹配到「a」後,不把「a」儲存到分組中。也就是說 result.group(1) 就取不到這個「a」了。

例子

表示式:(?:https?|ftp)://([^/\r\n]+)(/[^\r\n]*)?

結果1:

match ""

group 1: "stackoverflow.com"

group 2: "/"

結果2:

match "questions/tagged/regex"

group 1: "stackoverflow.com"

group 2: "/questions/tagged/regex"

功能:

如果分組所提供的 id 或者 name(名稱)存在,就返回正規表示式的條件匹配 y,如 果不存在,就返回 n;|n 是可選項。

解釋當有乙個分組被儲存後,就可以通過 result.group(1) 取得這個分組的值。在表示式中,可以「(1)」的方式,取出被儲存的分組。「?(1)」表示,如果能取到「分組1」,就使用「y」規則,否則就使用「x」規則。(當然,也可以使用「?(name)」的方式)

例子

表示式:(?:x)y

結果1:

match "xy"

full match 0-2 `xy`

(沒有group(1),也就是說「x」沒有被儲存到分組內)

功能:".*" 是匹配所有字元,可以乙個字元沒有;".+" 是區別所有字元,必須有乙個字元。

例子:

表示式:.*a

匹配:a 或 1a

不匹配:b

表示式:.+a

匹配:1a 或 aaaaa

不匹配:a

表示式:(?:(x)|y)(?(1)y|x)

結果:xy 或 yx 匹配。 xx 或 yy 不匹配。

解釋:

(?:(x)|y):匹配「x」或「y」。「?:」代表不把匹配的內容保留到分組裡,但因為「x」的兩邊有括號,所以「x」匹配上後,仍然被儲存到了分組裡;而「y」沒有括號,所以按照「?:」規則,沒有儲存到分組裡。

例子:

表示式:(?:(x)|y)

字串:x

結果:full match 0-1 `x`

group 1. 0-1 `x`

字串:y

結果:full match 0-1 `y`

從上面的例子可以看出,當是「x」的時候,因為「(x)」的原因,「x」被儲存到了「分組1」中,沒有受「?:」影響。但當是「y」時候,就沒有被儲存到分組中,所以結果中也沒有「group 1」.

(?(1)y|x):「?(1)」表示,如果有「1」這個分組的話(如果第乙個字元是「x」的話,就匹配上前面的「(x)」,就會有「1」這個分組),第二個要匹配字元必須是「y」;沒有「1」這個分組的話,第二個匹配的字元必須是「x」。

正規表示式分析**:

c Lamda表示式 簡化語法例子

看到乙個老 裡的方法,是判斷兩個string 陣列是否存在相同的元素 快一百行 了。public bool hasrole string rolelist if result return result 用lamda表示式 簡化語法例子,3行就行了 string rolelis new string...

正規表示式基礎語法

1.正規表示式基本語法 兩個特殊的符號 和 他們的作用是分別指出乙個字串的開始和結束。例子如下 the 表示所有以 the 開始的字串 there the cat 等 of despair 表示所以以 of despair 結尾的字串 abc 表示開始和結尾都是 abc 的字串 呵呵,只有 abc ...

正規表示式 基礎語法

eg1 檢驗登入名,只能以字母 數字 下劃線等字元組成,長度最短7,最高30 w 或者 a za z0 9 eg2 只能輸入由0到9之間的數字 0 9 或者 d eg3 只能輸入由26個英文本母組成的字串 a za z 說明 1.ab 表示乙個字串有乙個a後面跟著0個或多個b 2.ab 表示乙個字串...