java匹配正則表達式
A. java正則表達式是什麼
在程序開發中,難免會遇到需要匹配、查找、替換、判斷字元串的情況發生,而這些情況有時又比較復雜,如果用純編碼方式解決,往往會浪費程序員的時間及精力。因此,學習及使用正則表達式,便成了解決這一矛盾的主要手段。
正則表達式是一種可以用於模式匹配和替換的規范,一個正則表達式就是由普通的字元(例如字元a到z)以及特殊字元(元字元)組成的文字模式,它 用以描述在查找文字主體時待匹配的一個或多個字元串。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。
(1)java匹配正則表達式擴展閱讀:
正則表達式的特點是:
1、靈活性、邏輯性和功能性非常強;
2、可以迅速地用極簡單的方式達到字元串的復雜控制。
3、對於剛接觸的人來說,比較晦澀難懂。
由於正則表達式主要應用對象是文本,因此它在各種文本編輯器場合都有應用,小到著名編輯器EditPlus,大到Microsoft Word、Visual Studio等大型編輯器,都可以使用正則表達式來處理文本內容。
B. java正則表達式怎麼書寫
正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。
下面介紹具體的方法。
C. java 正則表達式是什麼
不同情況下的正則表達式:
匹配首尾空格的正則表達式:(^s*)|(s*$)。
匹配html標簽的正則表達式:<(.*)>(.*)</(.*)>|<(.*)/>。
配空行的正則表達式: [s| ]* 。
整數或者小數:^[0-9]+.{0,1}[0-9]{0,2}$。
只能輸入數字:"^[0-9]*$"。
只能輸入n位的數字:"^d{n}$"。
只能輸入至少n位的數字:"^d{n,}$"。
只能輸入m~n位的數字:。"^d{m,n}$"
只能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。
只能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。
只能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。
只能輸入非零的正整數:"^+?[1-9][0-9]*$"。
只能輸入非零的負整數:"^-[1-9][]0-9"*$。
只能輸入長度為3的字元:"^.{3}$"。
只能輸入由26個英文字母組成的字元串:"^[A-Za-z]+$"。
只能輸入由26個大寫英文字母組成的字元串:"^[A-Z]+$"。
只能輸入由26個小寫英文字母組成的字元串:"^[a-z]+$"。
只能輸入由數字和26個英文字母組成的字元串:"^[A-Za-z0-9]+$"。
只能輸入由數字、26個英文字母或者下劃線組成的字元串:"^w+$"。
驗證用戶密碼:"^[a-zA-Z]w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字元、數字和下劃線。
驗證是否含有^%&',;=?$"等字元:"[^%&',;=?$x22]+"。
只能輸入漢字:"^[u4e00-u9fa5]{0,}$"。
驗證Email地址:"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"。
驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。
驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。
匹配中文字元的正則表達式: [u4e00-u9fa5]。
匹配雙位元組字元(包括漢字在內):[^x00-xff]。
應用:計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1)String.prototype.len=function(){returnthis.replace(/[^x00-xff]/g,"aa").length;}。
D. java正則表達式是什麼
java正則表達式是計算機科學的一個概念。正則表達式使用單個字元串來描述、匹配一系列符合某個句法規則的字元串。
在編寫處理字元串的程序或網頁時,經常會有查找符合某些復雜規則的字元串的需要。正則表達式就是用於描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。
很可能你使用過Windows/Dos下用於文件查找的通配符(wildcard),也就是*和?。如果你想查找某個目錄下的所有的Word文檔的話,你會搜索*.doc。在這里,*會被解釋成任意的字元串。
和通配符類似,正則表達式也是用來進行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求——當然,代價就是更復雜——比如你可以編寫一個正則表達式,用來查找所有以0開頭,後面跟著2-3個數字,然後是一個連字型大小「-」,最後是7或8位數字的字元串(像010-12345678或0376-7654321)。
正則表達式的基本操作:
正則表達式定義:符合一定規則的表達式。
作用:用於專門操作字元串。
特點:用於一些特定的符號來表示一些代碼操作。這樣就簡化書寫。所以學習正則表達式,就是在學習一些特殊符號的使用。
好處:可以簡化對字元串的復雜操作。
弊端:符號定義越多,正則越長,閱讀性越差。
E. 請問JAVA中正則表達式匹配怎麼實現的!
Java中正則表達式匹配的語法規則:
packageorg.luosijin.test;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
/**
*正則表達式
*@versionV5.0
*@authorAdmin
*@date2015-7-25
*/
publicclassRegex{
/**
*@paramargs
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidmain(String[]args){
Patternpattern=Pattern.compile("b*g");
Matchermatcher=pattern.matcher("bbg");
System.out.println(matcher.matches());
System.out.println(pattern.matches("b*g","bbg"));
//驗證郵政編碼
System.out.println(pattern.matches("[0-9]{6}","200038"));
System.out.println(pattern.matches("//d{6}","200038"));
//驗證電話號碼
System.out.println(pattern.matches("[0-9]{3,4}//-?[0-9]+","02178989799"));
getDate("Nov10,2009");
charReplace();
//驗證身份證:判斷一個字元串是不是身份證號碼,即是否是15或18位數字。
System.out.println(pattern.matches("^//d{15}|//d{18}$","123456789009876"));
getString("D:/dir1/test.txt");
getChinese("welcometochina,江西奉新,welcome,你!");
validateEmail("[email protected]");
}
/**
*日期提取:提取出月份來
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetDate(Stringstr){
StringregEx="([a-zA-Z]+)|//s+[0-9]{1,2},//s*[0-9]{4}";
Patternpattern=Pattern.compile(regEx);
Matchermatcher=pattern.matcher(str);
if(!matcher.find()){
System.out.println("日期格式錯誤!");
return;
}
System.out.println(matcher.group(1));//分組的索引值是從1開始的,所以取第一個分組的方法是m.group(1)而不是m.group(0)。
}
/**
*字元替換:本實例為將一個字元串中所有包含一個或多個連續的「a」的地方都替換成「A」。
*
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidcharReplace(){
Stringregex="a+";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher("okaaaaLetmeAseeaaaaabooa");
Strings=matcher.replaceAll("A");
System.out.println(s);
}
/**
*字元串提取
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetString(Stringstr){
Stringregex=".+/(.+)$";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(str);
if(!matcher.find()){
System.out.println("文件路徑格式不正確!");
return;
}
System.out.println(matcher.group(1));
}
/**
*中文提取
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetChinese(Stringstr){
Stringregex="[//u4E00-//u9FFF]+";//[//u4E00-//u9FFF]為漢字
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(str);
StringBuffersb=newStringBuffer();
while(matcher.find()){
sb.append(matcher.group());
}
System.out.println(sb);
}
/**
*驗證Email
*@paramemail
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidvalidateEmail(Stringemail){
Stringregex="[0-9a-zA-Z]+@[0-9a-zA-Z]+//.[0-9a-zA-Z]+";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(email);
if(matcher.matches()){
System.out.println("這是合法的Email");
}else{
System.out.println("這是非法的Email");
}
}
}
F. java正則表達式
正則表達式定義了字元串的模式。
正則表達式可以用來搜索、編輯或處理文本。
正則表達式並不僅限於某一種語言,但是在每種語言中有細微的差別。
Java正則表達式和Perl的是最為相似的。
java.util.regex包主要包括以下三個類:
Pattern類:
pattern對象是一個正則表達式的編譯表示。Pattern類沒有公共構造方法。要創建一個Pattern對象,你必須首先調用其公共靜態編譯方法,它返回一個Pattern對象。該方法接受一個正則表達式作為它的第一個參數。
Matcher類:
Matcher對象是對輸入字元串進行解釋和匹配操作的引擎。與Pattern類一樣,Matcher也沒有公共構造方法。你需要調用Pattern對象的matcher方法來獲得一個Matcher對象。
PatternSyntaxException:
PatternSyntaxException是一個非強制異常類,它表示一個正則表達式模式中的語法錯誤。
G. java正則表達式匹配模式
不需要完全匹配的正則表達式,用m1.find()函數就可以模糊匹配,完整的程序如下:
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassG{
publicstaticvoidmain(String[]args){
Stringreg="\d{3}\s+\d{5}\s+\d{3}\s+\d{2}";
Patternp1=Pattern.compile(reg);
Stringu="CQGM021R1581121384600041739-1in-service";
Matcherm1=p1.matcher(u);
while(m1.find()){
System.out.println(m1.group());
}
}
}
運行結果:
581 12138 460 00
H. java 正則表達式 怎麼匹配 中文 和數字
java 正則匹配字元為純數字方法:
定義正則表達式為:
String reg="^\\d+$"
獲取要判斷的字元串:
String str;//可以通過Scanner從控制台輸入,也可以用字元串常量進行初始化
調用字元串的matches方法判斷字元串為純數字情況:
str.matches(reg);
如果是純數字返回為true,否則返回為false;
I. java正則表達式匹配數字後帶點的
java 正則匹配字元為數字後帶點的方法步驟:
第一步:定義正則表達式為:
String reg="[0-9.]"
第二步:獲取要判斷的字元串:
String str;//可以通過Scanner從控制台輸入,也可以用字元串常量進行初始化
第三步:調用字元串的matches方法判斷字元串為數字後面帶點的情況:
str.matches(reg);
如果是符合條件,返回為true,否則返回為false;
J. java中的正則表達式
Java正則表達式 (<img.*?)style=\".*?\" 替換成 $1
其中.*表示0個或0以上多個任意字元
.*?表示0個或0以上多個任意字元的非貪婪匹配,就是假如一個句子中有多個style,它匹配距離最近的那個style,同理後面的.*?匹配距離最近的雙引號
$1表示反向引用,它代表的是正則表達式中的第一個小括弧所括起來的分組的內容,如果有兩個小括弧括起來的內容,則分別用$1,$2表示它們(在替換後的字元串中)
完整的Java程序如下
123456public class CC { public static void main(String[] args) { String s="<img src=\"file/img/2016/12-28/1234-25521482893088459.jpg\" title=\"1234.jpg\" alt=\"\" width=\"396\" height=\"271\" style=\"width: 396px; height: 271px;\"/>"; System.out.println(s.replaceAll("(<img.*?)style=\".*?\"", "$1")); }}
運行結果
<img src="file/img/2016/12-28/1234-25521482893088459.jpg" title="1234.jpg" alt="" width="396" height="271" />