(三)java正則--java正則表達式


記一些知識。。。。

以下摘自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,二者任選一個出現;
(正則表達式):將多個子表達式合成一個表示,作為一組出現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM