国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

正則表達式的概述及在JAVA中的使用方法

2019-11-17 05:57:29
字體:
來源:轉載
供稿:網友

正則表達式的作用

提供更強大的字符串處理能力,測試字符串內的模式,例如,可以測試輸入字符串,以查看字符串內是否出現電話號碼模式或身份證號碼模式。即數據驗證替換文本可以使用正則表達式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。

基于模式匹配從字符串中提取子字符串可以查找文檔內或輸入域內特定的文本。

java中使用正則表達式

正則表達式在字符串處理上有著強大的功能,sun在jdk1.4加入了對它的支持,jdk1.4中加入了java.util.regex包提供對正則表達式的支持。而且Java.lang.String類中的replaceAll和split函數也是調用的正則表達式來實現的。

正則表達式對字符串的操作主要包括:

1.字符串匹配

2.指定字符串替換

3.指定字符串查找

4.字符串分割

Pattern類

Pattern類的實例表示以字符串形式指定的正則表達式,其語 法類似于Perl所用的語法。

用字符串形式指定的正則表達式,必須先編譯成Pattern類的 實例。生成的模式用于創建Matcher對象,它根據正則表達式與任 意字符序列進行匹配。多個匹配器可以共享一個模式,因為它是非專屬的。

用compile方法把給定的正則表達式編譯成模式,然后用 matcher方法創建一個匹配器,這個匹配器將根據此模式對給定輸 入進行匹配。pattern 方法可返回編譯這個模式所用的正則表達式。

Matcher類

通過調用某個模式的matcher方法,從這個模式生成匹配器。 匹配器創建之后,就可以用它來執行三類不同的匹配操作:

matches方法根據此模式,對整個輸入序列進行匹配。

lookingAt方法根據此模式,從開始處對輸入序列進 行匹配。

find方法掃描輸入序列,尋找下一個與模式匹配的地方。

這些方法都會返回一個表示成功或失敗的布爾值。假如匹配成功,通過查詢 匹配器的狀態,可以獲得更多的信息。

構建正則表達式

/d 等於 [0-9] 數字

/D 等於 [^0-9] 非數字

/s 等於 [ /t/n/x0B/f/r] 空白字符

/S 等於 [^ /t/n/x0B/f/r] 非空白字符

/w 等於 [a-zA-Z_0-9] 數字或是英文字

/W 等於 [^a-zA-Z_0-9] 非數字與英文字

$ 表示每行的結尾

. 匹配所有字符,包括空格、Tab字符甚至換行符

或 []方括號只答應匹配單個字符

^ 符號稱為否符號。假如用在方括號內,表示不想要匹配的字符。 表示每行的開頭

( ) 形成一組

查詢

import java.util.regex.*; public class RegexExample {     public static void main(String[] args)     {         String str="aaabc efg ABC";         String regEx="aaafff";         Pattern p=Pattern.compile(regEx);//編譯成模式         Matcher m=p.matcher(str);//創建一個匹配器         boolean rs=m.find();         if(rs)         {             System.out.

假如str中有regEx,那么rs為true,否則為flase。假如想在查找時忽略大小寫,

則可以寫成Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);

提取 (從本例所給完整路徑中提取文件名)

import java.util.regex.*;public class RegexExample2 {     public static void main(String[] args)     {         String regEx=".+////(.+)$";         String str="c://dir1//dir2//name.txt";         Pattern p=Pattern.compile(regEx);         Matcher m=p.matcher(str);         boolean rs=m.find();         for(int i=1;i<=m.groupCount();i++)         {             System.out.println(m.group(i)); //括號內匹配內容        }     } }

以上的執行結果為name.txt,提取的字符串儲存在m.group(i)中,其中i最大值為m.groupCount();

分割

import java.util.regex.*; public class RegexExample3 {     public static void main(String[] args)     {         String regEx="::";         Pattern p=Pattern.compile(regEx);         String[] r=p.split("xd::abc::cde");         for(int i=0;i<r.length;i++)         {             System.out.println(r[i]);         }     } }

執行后,r就是{xd,abc,cde},其實分割時還有跟簡單的方法:

String str="xd::abc::cde";

String[] r=str.split("::");

替換(刪除)

import java.util.regex.*; public class RegexExample1 {     public static void main(String[] args)     {         String regEx="a+";//表示一個或多個a         Pattern p=Pattern.compile(regEx);         Matcher m=p.matcher("aaabbced a ccdeaa");         String s=m.replaceAll("A");         System.out.println(s);     } }

結果為"Abbced A ccdeA"

假如寫成空串,既可達到刪除的功能,比如:

String s=m.replaceAll("");

結果為"bbced ccde"



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 四会市| 呼图壁县| 信宜市| 信阳市| 西昌市| 牟定县| 永春县| 石渠县| 景东| 叙永县| 和龙市| 磐安县| 广平县| 垫江县| 辽宁省| 洪湖市| 宣化县| 大港区| 大姚县| 周口市| 惠州市| 贵定县| 唐山市| 诸暨市| 新丰县| 拜泉县| 扶余县| 寿宁县| 门头沟区| 遵化市| 峨眉山市| 甘孜县| 明水县| 达州市| 宜城市| 黄冈市| 陆良县| 沾化县| 衡阳市| 湘潭市| 辽中县|