佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Java正則表達(dá)式提取字符的方法實(shí)例

Java正則表達(dá)式提取字符的方法實(shí)例

熱門標(biāo)簽:電子圍欄 Mysql連接數(shù)設(shè)置 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 團(tuán)購(gòu)網(wǎng)站 Linux服務(wù)器 銀行業(yè)務(wù) 服務(wù)器配置 阿里云

正好遇到一個(gè)需求需要將字符串中特定的字符全部提取出來(lái),這個(gè)如果是按常規(guī)的字符串處理的話非常的繁瑣。于是想到用正則表達(dá)式來(lái)完成。項(xiàng)目需求是這樣的:需要提取車牌號(hào)中最后一個(gè)數(shù)字,比如說(shuō):蘇A7865提取5,蘇A876X提取6

實(shí)現(xiàn)方法:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String s = "A876X";
// 把要匹配的字符串寫成正則表達(dá)式,然后要提取的字符使用括號(hào)括起來(lái)
// 在這里,我們要提取最后一個(gè)數(shù)字,正則規(guī)則就是“一個(gè)數(shù)字加上大于等于0個(gè)非數(shù)字再加上結(jié)束符”
Pattern pattern = Pattern.compile("(\\d)[^\\d]*$");
Matcher matcher = pattern.matcher(s);
if(matcher.find())
System.out.println(matcher.group(1));
}
}

關(guān)于Matcher 中的幾個(gè)方法說(shuō)明:

Mathcer.start()/ Matcher.end()/ Matcher.group()
當(dāng)使用matches(),lookingAt(),find()執(zhí)行匹配操作后,就可以利用以上三個(gè)方法得到更詳細(xì)的信息.
start()返回匹配到的子字符串在字符串中的索引位置.
end()返回匹配到的子字符串的最后一個(gè)字符在字符串中的索引位置.
group()返回匹配到的子字符串

Java代碼示例:

Pattern p=Pattern.compile(“\d+”); 
Matcher m=p.matcher(“aaa2223bb”); 
m.find();//匹配2223 
m.start();//返回3 
m.end();//返回7,返回的是2223后的索引號(hào) 
m.group();//返回2223
Mathcer m2=p.matcher(“2223bb”); 
m2.lookingAt(); //匹配2223 
m2.start(); //返回0,由于lookingAt()只能匹配前面的字符串,所以當(dāng)使用lookingAt()匹配時(shí),start()方法總是返回0 
m2.end(); //返回4 
m2.group(); //返回2223
Matcher m3=p.matcher(“2223”); //如果Matcher m3=p.matcher(“2223bb”); 那么下面的方法出錯(cuò),因?yàn)椴黄ヅ浞祷豧alse 
m3.matches(); //匹配整個(gè)字符串 
m3.start(); //返回0 
m3.end(); //返回3,原因相信大家也清楚了,因?yàn)閙atches()需要匹配所有字符串 
m3.group(); //返回2223

說(shuō)了這么多,相信大家都明白了以上幾個(gè)方法的使用,該說(shuō)說(shuō)正則表達(dá)式的分組在java中是怎么使用的.
start(),end(),group()均有一個(gè)重載方法它們是start(int i),end(int i),group(int i)專用于分組操作,Mathcer類還有一個(gè)groupCount()用于返回有多少組.

Java代碼示例:

Pattern p=Pattern.compile(“([a-z]+)(\d+)”); 
Matcher m=p.matcher(“aaa2223bb”); 
m.find(); //匹配aaa2223 
m.groupCount(); //返回2,因?yàn)橛?組 
m.start(1); //返回0 返回第一組匹配到的子字符串在字符串中的索引號(hào) 
m.start(2); //返回3 
m.end(1); //返回3 返回第一組匹配到的子字符串的最后一個(gè)字符在字符串中的索引位置. 
m.end(2); //返回7 
m.group(1); //返回aaa,返回第一組匹配到的子字符串 
m.group(2); //返回2223,返回第二組匹配到的子字符串

現(xiàn)在我們使用一下稍微高級(jí)點(diǎn)的正則匹配操作,例如有一段文本,里面有很多數(shù)字,而且這些數(shù)字是分開的,我們現(xiàn)在要將文本中所有數(shù)字都取出來(lái),利用java的正則操作是那么的簡(jiǎn)單.

Java代碼示例:

Pattern p=Pattern.compile(“\d+”); 
Matcher m=p.matcher(“我的QQ是:456456 我的電話是:0532214 我的郵箱是:aaa123@aaa.com”); 
while(m.find()) { 
System.out.println(m.group()); 
}

輸出:

456456
0532214
123

如將以上while()循環(huán)替換成

while(m.find()) { 
System.out.println(m.group()); 
System.out.print(“start:”+m.start()); 
System.out.println(” end:”+m.end()); 
} 

則輸出:

456456
start:6 end:12
0532214
start:19 end:26
123
start:36 end:39

現(xiàn)在大家應(yīng)該知道,每次執(zhí)行匹配操作后start(),end(),group()三個(gè)方法的值都會(huì)改變,改變成匹配到的子字符串的信息,以及它們的重載方法,也會(huì)改變成相應(yīng)的信息.

注意:只有當(dāng)匹配操作成功,才可以使用start(),end(),group()三個(gè)方法,否則會(huì)拋出java.lang.IllegalStateException,也就是當(dāng)matches(),lookingAt(),find()其中任意一個(gè)方法返回true時(shí),才可以使用。

以上內(nèi)容給介紹了Java正則表達(dá)式提取字符的方法實(shí)例,希望對(duì)大家有所幫助。

您可能感興趣的文章:
  • Java 正則表達(dá)式詳解
  • JAVA正則表達(dá)式 Pattern和Matcher
  • java中 利用正則表達(dá)式提取( )內(nèi)內(nèi)容
  • Java 正則表達(dá)式學(xué)習(xí)總結(jié)和一些小例子
  • java正則表達(dá)式四種常用的處理方式(匹配、分割、替代、獲取)
  • JAVA中正則表達(dá)式匹配,替換,查找,切割的方法
  • Java正則表達(dá)式過(guò)濾出字母、數(shù)字和中文
  • java正則表達(dá)式驗(yàn)證郵箱、電話號(hào)碼示例
  • java正則表達(dá)式提取數(shù)字的方法實(shí)例
  • JAVA正則表達(dá)式的基本使用教程

標(biāo)簽:廣元 大理 蚌埠 江蘇 萍鄉(xiāng) 棗莊 衡水 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Java正則表達(dá)式提取字符的方法實(shí)例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    罗平县| 青海省| 哈密市| 固始县| 新建县| 饶河县| 玉环县| 库车县| 垣曲县| 钟祥市| 晋中市| 岳阳市| 保定市| 锡林郭勒盟| 丘北县| 永清县| 三明市| 理塘县| 同德县| 易门县| 屯昌县| 西峡县| 淮滨县| 淄博市| 饶阳县| 延边| 宁南县| 宜阳县| 满城县| 榆中县| 钟山县| 那曲县| 托克托县| 高雄县| 海林市| 彩票| 原阳县| 英德市| 阳东县| 台北县| 富宁县|