標籤:direct 基本文法 方式 img aaa 規則 http 運算元 image
1. 什麼是Regex
Regex使用單個字串來描述、匹配一系列符合某個句法規則的字串。Regex可以用形式化語言理論的方式來表達。Regex由常量和運算元組成,它們分別指示字串的集合和在這些集合上的運算
2. 基本文法
符號
-----優先順序
* 具有最高優先順序 代表前面的字元可以不出現,也可以出現一次或者多次。(0次、或1次、或多次)。例如,「0*42」可以匹配42、042、0042、00042等
() 第二優先順序 圓括弧可以用來定義操作符的範圍和優先度。例如,「gr(a|e)y」等價於「gray|grey」,「(grand)?father」匹配father和grandfather。
| 最低優先順序 豎線符代表選擇(即並集)。例如「gray|grey」可以匹配grey或gray。
-----數量
+ 加號代表前面的字元必須至少出現一次。(1次、或多次)。例如,「goo+gle」可以匹配google、gooogle、goooogle等;
? 問號代表前面的字元最多隻可以出現一次。(0次、或1次)。例如,「colou?r」可以匹配color或者colour
* 星號代表前面的字元可以不出現,也可以出現一次或者多次。(0次、或1次、或多次)。例如,「0*42」可以匹配42、042、0042、00042等。
{n} n是一個非負整數。匹配確定的n次。例如,「o{2}」不能匹配「Bob」中的「o」,但是能匹配「food」中的兩個o。
{n,} n是一個非負整數。至少匹配n次。例如,「o{2,}」不能匹配「Bob」中的「o」,但能匹配「foooood」中的所有o。「o{1,}」等價於「o+」。「o{0,}」則等價於「o*」。
{n,m} m和n均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,「o{1,3}」將匹配「fooooood」中的前三個o。「o{0,1}」等價於「o?」。請注意在逗號和兩個數之間不能有空格。
比如
(ab)c == abc
a|(b(c*)) == a|bc*
a|b* 代表 {a , "" (空), b, bb, bbb, ...}
(a|b)* 代表 由包括空串、任意數目個a或b字元組成的所有字串的集合
ab*(c|ε) 代表 開始於一個a接著零或多個b和最終可選的一個c的字串的集合
3. 正則上組的概念
例如 ((A)(B(C)))
第0組 ((A)(B(C)))
第一組 ((A)(B(C)))
第二組 (A)
第三組 (B(C))
第四組 (C)
4. java上應用
等價於
表示用 規則 a*b a可以出現0~n去匹配字串"aaaaaab"
輸出為:
java Regex