記一些知識。。。。
以下摘自w3school..
"(.)\\1+" 括號中的點表示任意字符,后面的\\1表示取第一個括號匹配的內容,后面的加號表示匹配1次或1次以上。二者加在一起就是某個字符重復兩次或兩次以上
符號定義
基本書寫符號
符號 |
符號 |
示例 |
解釋 |
匹配輸入 |
\ |
轉義符 |
\* |
符號“*” |
* |
[ ] |
可接收的字符列表 |
[efgh] |
e、f、g、h中的任意1個字符 |
e、f、g、h |
[^] |
不接收的字符列表 |
[^abc] |
除a、b、c之外的任意1個字符,包括數字和特殊符號 |
m、q、5、* |
| |
匹配“|”之前或之后的表達式 |
ab|cd |
ab或者cd |
ab、cd |
( ) |
將子表達式分組 |
(abc) |
將字符串abc作為一組 |
abc |
- |
連字符 |
A-Z |
任意單個大寫字母 |
大寫字母 |
限定符
限定符將可選數量的數據添加到正則表達式,下表為常用限定符:
符號 |
含義 |
示例 |
示例 |
匹配輸入 |
不匹配輸入 |
* |
指定字符重復0次或n次 |
(abc)* |
僅包含任意個abc的字符串,等效於\w* |
abc、abcabcabc |
a、abca |
+ |
指定字符重復1次或n次 |
m+(abc)* |
以至少1個m開頭,后接任意個abc的字符串 |
m、mabc、mabcabc |
ma、abc |
? | 指定字符重復0次或1次 |
m+abc? |
以至少1個m開頭,后接ab或abc的字符串 |
mab、mabc、mmmab、mmabc |
ab、abc、mabcc |
{n} |
只能輸入n個字符 |
[abcd]{3} |
由abcd中字母組成的任意長度為3的字符串 |
abc、dbc、adc |
a、aa、dcbd |
{n,} |
指定至少 n 個匹配 |
[abcd]{3,} |
由abcd中字母組成的任意長度不小於3的字符串 |
aab、dbc、aaabdc |
a、cd、bb |
{n,m} |
指定至少 n 個但不多於 m 個匹配 |
[abcd]{3,5} |
由abcd中字母組成的任意長度不小於3,不大於5的字符串 |
abc、abcd、aaaaa、bcdab |
ab、ababab、a |
^ |
指定起始字符 |
^[0-9]+[a-z]* |
以至少1個數字開頭,后接任意個小寫字母的字符串 |
123、6aa、555edf |
abc、aaa、a33 |
$ |
指定結束字符 |
^[0-9]\-[a-z]+$ |
以1個數字開頭后接連字符“–”,並以至少1個小寫字母結尾的字符串 |
2-a、3-ddd、5-efg |
33a、8-、7-Ab |
匹配字符集
匹配字符集是預定義的用於正則表達式中的符號集。如果字符串與字符集中的任何一個字符相匹配,它就會找到這個匹配項。
正則表達式中的部分匹配字符集:
符號 |
含義 |
示例 |
示例 |
匹配輸入 |
不匹配輸入 |
. |
匹配除 \n 以外的任何字符 |
a..b |
以a開頭,b結尾,中間包括2個任意字符的長度為4的字符串 |
aaab、aefb、a35b、a#*b |
ab、aaaa、a347b |
\d |
匹配單個數字字符,相當於[0-9] |
\d{3}(\d)? |
包含3個或4個數字的字符串 |
123、9876 |
123、9876 |
\D | 匹配單個非數字字符,相當於[^0-9] |
\D(\d)* |
以單個非數字字符開頭,后接任意個數字字符串 |
a、A342 | aa、AA78、1234 |
\w |
匹配單個數字、大小寫字母字符,相當於[0-9a-zA-Z] |
\d{3}\w{4} |
以3個數字字符開頭的長度為7的數字字母字符串 |
234abcd、12345Pe |
58a、Ra46 |
\W |
匹配單個非數字、大小寫字母字符,相當於[^0-9a-zA-Z] |
\W+\d{2} |
以至少1個非數字字母字符開頭,2個數字字符結尾的字符串 |
#29、#?@10 |
23、#?@100 |
分組構造
常用分組構造形式:
常用分組構造形式 | 說明 |
() | 非命名捕獲。捕獲匹配的子字符串(或非捕獲組)。編號為零的第一個捕獲是由整個正則表達式模式匹配的文本,其它捕獲結果則根據左括號的順序從1開始自動編號。 |
(?<name>) | 命名捕獲。將匹配的子字符串捕獲到一個組名稱或編號名稱中。用於name的字符串不能包含任何標點符號,並且不能以數字開頭。可以使用單引號替代尖括號,例如 (?'name') |
字符轉義
如果你想查找元字符本身的話,比如你查找.,或者*,就出現了問題:你沒辦法指定它們,因為它們會被解釋成別的意思。這時你就得使用\來取消這些字符的特殊意義。因此,你應該使用\.和\*。當然,要查找\本身,你也得用\\
例如:deerchao\.net匹配deerchao.NET,C:\\Windows匹配C:\Windows。注意在Java中: (https://github\\.com/[\\w\\-]) 用"\\."配備"."。
常用正則表達式舉例
非負整數:“^\d+$ ”
正整數: “ ^[0-9]*[1-9][0-9]*$”
非正整數: “ ^((-\d+)|(0+))$”
整數: “ ^-?\d+$”
英文字符串: “ ^[A-Za-z]+$”
英文字符數字串: “ ^[A-Za-z0-9]+$”
英數字加下划線串: “^\w+$”
E-mail地址:“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”
URL:“^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$”
匹配特定數字
^[1-9]d*$ //匹配正整數
^-[1-9]d*$ //匹配負整數
^-?[1-9]d*$ //匹配整數
^[1-9]d*|0$ //匹配非負整數(正整數 + 0)
^-[1-9]d*|0$ //匹配非正整數(負整數 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮點數
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配負浮點數
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮點數
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非負浮點數(正浮點數 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮點數(負浮點數 + 0)
匹配特定字符串
^[A-Za-z]+$ //匹配由26個英文字母組成的字符串
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字符串
^[a-z]+$ //匹配由26個英文字母的小寫組成的字符串
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字符串
^w+$ //匹配由數字、26個英文字母或者下划線組成的字符串
驗證Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
驗證InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
驗證電話號碼:“^((d{3,4})|d{3,4}-)?d{7,8}$”
驗證身份證號(15位或18位數字):“^d{15}|d{}18$”
驗證一年的12個月:“^(0?[1-9]|1[0-2])$”正確格式為:“01”-“09”和“1”“12”
驗證一個月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
匹配中文字符的正則表達式: [u4e00-u9fa5]
匹配雙字節字符(包括漢字在內):[^x00-xff]
匹配空行的正則表達式:n[s| ]*r
匹配HTML標記的正則表達式:/< (.*)>.*|< (.*) />/
匹配首尾空格的正則表達式:(^s*)|(s*$)
匹配Email地址的正則表達式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配網址URL的正則表達式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
Java這些常用的正則表達式在處理大數據查找,更新,替換的時候可以極大的提高效率
正則表達式匹配簡單語法匯總
1、字母:匹配單個字母
A:表示匹配字母A;
\\:匹配轉義字符“\”;
\t:匹配轉義字符“\t”;
\n:匹配轉義字符“\n”;
2、一組字符:任意匹配里面的一個單個字符
[abc]:表示可能是字母a,可能是字母b或者是字母c;
[^abc]:表示不是字母a,字母b,字母c的任意一個;
[a-zA-Z]:表示全部字母中的任意一個;
[0-9]:表示全部數字的任意一個;
3、邊界匹配
^:表示一組正則的開始;
$:表示一組正則的結束;
4、簡寫表達式:每一位出現的簡寫標記也只表示一位
· :表示任意的一位字符;
\d :表示任意的一位數字,等價於“[0-9]”;
\D :表示任意的一位非數字,等價於“[~0-9]”;
\w :表示任意的一位字母、數字、_,等價於“[a-zA-Z0-9_]”;
\w :表示任意的一位非字母、數字、_,等價於“[^a-zA-Z0-9_]”;
\s :表示任意的一位空格,例如:\n、\t等;
\S :表示任意的一位非空格;
5、數量表示:之前所有的正則都只是表示一位,如果要表示多位,則就需要數量表示。
?:此正則出現0次或1次;
*:此正則出現0次、1次或多次;
+:次正則出現1次或多次;
{n}:此正則出現正好n次;
{n,}:此正則出現n次以上;
{n,m}:此正則出現n – m次。
6、邏輯表示:與、或、非
正則表達式A正則表達式B: 表達式A之后緊跟着表達式B;
正則表達式|A正則表達式B: 表示表達式A或者表達式B,二者任選一個出現;
(正則表達式):將多個子表達式合成一個表示,作為一組出現。