java字元串匹配正則
⑴ java 怎麼利用正則表達式從給定的字元串中取出匹配規則字元串
java正則提取需要用到Matcher類,下面給出案例示例供參考
需要提取車牌號中最後一個數字,比如說:蘇A7865提取5,蘇A876X提取6
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String s = "A876X";
// 把要匹配的字元串寫成正則表達式,然後要提取的字元使用括弧括起來
// 在這里,我們要提取最後一個數字,正則規則就是「一個數字加上大於等於0個非數字再加上結束符」
Pattern pattern = Pattern.compile("(\\d)[^\\d]*$");
Matcher matcher = pattern.matcher(s);
if(matcher.find())
System.out.println(matcher.group(1));
}
}
關於Matcher 中的幾個方法說明:
Mathcer.start()
Matcher.end()
Matcher.group()
當使用matches(),lookingAt(),find()執行匹配操作後,就可以利用以上三個方法得到更詳細的信息.
start()返回匹配到的子字元串在字元串中的索引位置.
end()返回匹配到的子字元串的最後一個字元在字元串中的索引位置.
group()返回匹配到的子字元串
示例代碼如下,具體功能請參考注釋
Pattern p=Pattern.compile(「\d+」);
Matcher m=p.matcher(「aaa2223bb」);
m.find();//匹配2223
m.start();//返回3
m.end();//返回7,返回的是2223後的索引號
m.group();//返回2223
Mathcer m2=p.matcher(「2223bb」);
m2.lookingAt(); //匹配2223
m2.start(); //返回0,由於lookingAt()只能匹配前面的字元串,所以當使用lookingAt()匹配時,start()方法總是返回0
m2.end(); //返回4
m2.group(); //返回2223
Matcher m3=p.matcher(「2223」); //如果Matcher m3=p.matcher(「2223bb」); 那麼下面的方法出錯,因為不匹配返回false
m3.matches(); //匹配整個字元串
m3.start(); //返回0
m3.end(); //返回3,原因相信大家也清楚了,因為matches()需要匹配所有字元串
m3.group(); //返回2223
另外,Mathcer類中start(),end(),group()均有一個重載方法它們是start(int i),end(int i),group(int i)專用於分組操作,Mathcer類還有一個groupCount()用於返回有多少組.
示例如下:
Pattern p=Pattern.compile(「([a-z]+)(\d+)」);
Matcher m=p.matcher(「aaa2223bb」);
m.find(); //匹配aaa2223
m.groupCount(); //返回2,因為有2組
m.start(1); //返回0 返回第一組匹配到的子字元串在字元串中的索引號
m.start(2); //返回3
m.end(1); //返回3 返回第一組匹配到的子字元串的最後一個字元在字元串中的索引位置.
m.end(2); //返回7
m.group(1); //返回aaa,返回第一組匹配到的子字元串
m.group(2); //返回2223,返回第二組匹配到的子字元串
注意: 只有當匹配操作成功,才可以使用start(),end(),group()三個方法,否則會拋出java.lang.IllegalStateException,也就是當matches(),lookingAt(),find()其中任意一個方法返回true時,才可以使用。
轉載自
http://..com/link?url=k2Odn5gavn2rQjstEvvBR_-H-TyW0C3axT1IHrPZMvjM2ePqADrPf1_qw19fq
⑵ 我想在java代碼中匹配字元串,用正則表達式,代碼應該怎麼寫
1、java代碼匹配漢字正則:[\u4E00-\u9FA5]+
2、java代碼匹配漢字和字母正則[\u4E00-\u9FA5]+[a-zA-Z]+
3、js中只可以輸入漢字:
function checkChinese(s)
{
var reg=/[\u4E00-\u9FA5]/g;
if (!reg.test(s)){alert("只允許輸入漢字!");}
}
⑶ java正則匹配一個要求字元串
importjava.util.Arrays;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassRegexDemo{
privatestaticPatternpattern;
publicstaticvoidmain(String[]args){
Stringsource="abc[javascript|JavaScript|前端用的一個語言|11|12|技術-公司]xyz";
Matchermatcher=getPattern().matcher(source);
if(matcher.find()){
System.out.println("名稱="+matcher.group(1));
System.out.println("別名="+matcher.group(2));
System.out.println("簡介="+matcher.group(3));
System.out.println("關鍵ID="+matcher.group(4));
System.out.println("同義ID="+matcher.group(5));
System.out.println("類別="+Arrays.toString(matcher.group(6).split("-")));
}
}
(){
if(pattern==null){
Stringstart="\[";
Stringword="([^\|]*)";
Stringsplit="\|";
Stringend="\]";
Stringregex=start+word+split+word+split+word+split+word+split
+word+split+"((技術|公司|產品|人物)(\-(技術|公司|產品|人物)){0,3})"+end;
pattern=Pattern.compile(regex);
}
returnpattern;
}
}
正好group1-6對應你要的數據。
⑷ java正則表達式 怎麼匹配字元串
你要先寫好正則表達式
單純判斷用String的matches()方法就可以了
public class Test {
public static void main(String[] args) {
String s = "1234";
s.matches("\\d*");//\\d*為正則表達式,數字出現零次或多次,返回boolean類型
}
}
⑸ java正則表達式是什麼
java正則表達式是計算機科學的一個概念。正則表達式使用單個字元串來描述、匹配一系列符合某個句法規則的字元串。
在編寫處理字元串的程序或網頁時,經常會有查找符合某些復雜規則的字元串的需要。正則表達式就是用於描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。
很可能你使用過Windows/Dos下用於文件查找的通配符(wildcard),也就是*和?。如果你想查找某個目錄下的所有的Word文檔的話,你會搜索*.doc。在這里,*會被解釋成任意的字元串。
和通配符類似,正則表達式也是用來進行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求——當然,代價就是更復雜——比如你可以編寫一個正則表達式,用來查找所有以0開頭,後面跟著2-3個數字,然後是一個連字型大小「-」,最後是7或8位數字的字元串(像010-12345678或0376-7654321)。
正則表達式的基本操作:
正則表達式定義:符合一定規則的表達式。
作用:用於專門操作字元串。
特點:用於一些特定的符號來表示一些代碼操作。這樣就簡化書寫。所以學習正則表達式,就是在學習一些特殊符號的使用。
好處:可以簡化對字元串的復雜操作。
弊端:符號定義越多,正則越長,閱讀性越差。
⑹ java 怎麼利用正則表達式從給定的字元串中取出匹配規則字元串
java正則提取需要用到Matcher類,下面給出案例示例供參考
需要提取車牌號中最後一個數字,比如說:蘇A7865提取5,蘇A876X提取6
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassTest{
publicstaticvoidmain(String[]args){
Strings="A876X";
//把要匹配的字元串寫成正則表達式,然後要提取的字元使用括弧括起來
//在這里,我們要提取最後一個數字,正則規則就是「一個數字加上大於等於0個非數字再加上結束符」
Patternpattern=Pattern.compile("(\d)[^\d]*$");
Matchermatcher=pattern.matcher(s);
if(matcher.find())
System.out.println(matcher.group(1));
}
}
關於Matcher 中的幾個方法說明:
Mathcer.start()
Matcher.end()
Matcher.group()
當使用matches(),lookingAt(),find()執行匹配操作後,就可以利用以上三個方法得到更詳細的信息.
start()返回匹配到的子字元串在字元串中的索引位置.
end()返回匹配到的子字元串的最後一個字元在字元串中的索引位置.
group()返回匹配到的子字元串
示例代碼如下,具體功能請參考注釋
Patternp=Pattern.compile(「d+」);
Matcherm=p.matcher(「aaa2223bb」);
m.find();//匹配2223
m.start();//返回3
m.end();//返回7,返回的是2223後的索引號
m.group();//返回2223
Mathcerm2=p.matcher(「2223bb」);
m2.lookingAt();//匹配2223
m2.start();//返回0,由於lookingAt()只能匹配前面的字元串,所以當使用lookingAt()匹配時,start()方法總是返回0
m2.end();//返回4
m2.group();//返回2223
Matcherm3=p.matcher(「2223」);//如果Matcherm3=p.matcher(「2223bb」);那麼下面的方法出錯,因為不匹配返回false
m3.matches();//匹配整個字元串
m3.start();//返回0
m3.end();//返回3,原因相信大家也清楚了,因為matches()需要匹配所有字元串
m3.group();//返回2223
另外,Mathcer類中start(),end(),group()均有一個重載方法它們是start(int i),end(int i),group(int i)專用於分組操作,Mathcer類還有一個groupCount()用於返回有多少組.
示例如下:
Patternp=Pattern.compile(「([a-z]+)(d+)」);
Matcherm=p.matcher(「aaa2223bb」);
m.find();//匹配aaa2223
m.groupCount();//返回2,因為有2組
m.start(1);//返回0返回第一組匹配到的子字元串在字元串中的索引號
m.start(2);//返回3
m.end(1);//返回3返回第一組匹配到的子字元串的最後一個字元在字元串中的索引位置.
m.end(2);//返回7
m.group(1);//返回aaa,返回第一組匹配到的子字元串
m.group(2);//返回2223,返回第二組匹配到的子字元串
注意: 只有當匹配操作成功,才可以使用start(),end(),group()三個方法,否則會拋出java.lang.IllegalStateException,也就是當matches(),lookingAt(),find()其中任意一個方法返回true時,才可以使用。
⑺ java正則匹配字元串的值
這個很簡單的:
Stringpatern=""code":"(\d+?)"";
Matchermatcher=Pattern.compile(patern).matcher(str);
while(matcher.find()){
System.out.println(matcher.group(1));
}
⑻ JAVA如何用正則表達式完成字元串的匹配
String str="111.111.222.1"; //你要匹配的字元串
String regex = "\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}";//正則表達式
if (str.matches(regex)) {//字元串 滿足條件
}
⑼ Java中正則表達式 匹配字元串
String regEx = "<a>([\s\S]*?)</a>";
String s = "<a>123</a><a>456</a><a>789</a>";
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
boolean rs = mat.find();
for(int i=1;i<=mat.groupCount();i++){
System.out.println(mat.group(i));
}
⑽ java 正則匹配修改字元串
在java裡面,'\'被當作轉義字元,'\r'、'\n'分別表示回車換行,'\t'是製表符,這些樓主應當知道吧。我不明白樓主為何要在哪裡加\r\n,是想要輸出換行,還是想就顯示成\r\n。至於這里為什麼會出現這種結果,我猜測可能是Pattern類匹配時是按行來的,具體是不是這樣,樓主可以自己用eclipse工具查看一下compile的源碼。我這里現在沒有工具,所以不能替你查了。compile("(<span.*?>)(.*)(</span>)",Pattern.CASE_INSENSITIVE);我認為應當有一個類似Pattern.CASE_INSENSITIVE的公有靜態參數可以控制不處理換行符的,樓主自己看看。