功能:匹配文字字串的字面值 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 表示乙個字串...