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

首頁 > 編程 > Java > 正文

旋渦JAVA筆記--正則表達式

2019-11-06 07:25:58
字體:
來源:轉載
供稿:網友

(瘋狂java講義)– 摘要 正則表達式是一個強大的字符串處理工具,可以對字符串進行 查找 提取 、分割、替換等操作。String類中也提供了諸如matches()、replaceAll()、replaceFirst()、split()等 Java還提供了Pattern和Matcher兩個類來專門用于提供正則表達式支持。

正則表達式所支持的合法字符:

x (可表示任何合法字符)/0mnn(8進制數0mnn所表示的字符)/xhh(16進制0xhh所表示的字符)/uhhhh(16進制值所表示的Unicode字符)/t(制表符)/n(換行符)/r(回車符)/f(換頁符)/a(報警)/e(Escape符)

正則表達式的特殊字符: 注:要匹配如下的字符可加“/”

$ 匹配一行的結尾^ 匹配一行的開頭() 標記字表達式的開頭和結尾[] 確定中括號的開頭和結尾位置{} 標記前面字表達式的出現頻度 eg:“/w{3}”*字表達式出現0~+∞次?字表達是出現0~1次+字表達是出現1~+∞次.匹配除 /n 外單字符/ 轉義下一個字符通常在一個正則表達式中多次出現| 兩項之間任選一項=>or

預定義字符:

/d 匹配0~9之間的數字/D 匹配非數字/s 匹配所有空白字符 eg:/t /n /f /r/S 匹配所有非空白字符/w 匹配所有單詞字符/W 匹配所有非單詞字符

Pattern Matcher類

Pattern是不可變類可供多個并發線程安全使用 Matcher類提供的常用方法如下:

find() 返回目標字符串中是否包含與Pattern(模板)匹配的子串group() 返回上一次與Pattern匹配的子串start() 返回上一次與Pattern匹配的子串在目標字符串中的開始位置end() 返回上一次與Pattern匹配的子串在目標字符串中的結束位置+1lookingAt() 返回目標字符串前面部分與Pattern是否匹配matches() 返回整個目標字符串與Pattern是否匹配reset() 將現有的matcher對象應用于一個新的字符串序列public class JavaTest { public static void main(String[] args) { String str = "我想購買一本《瘋狂JAVA講義》,盡快聯系我13500006666," + "范德薩發集合地少廢話代課老師13611125565" + "范德薩發大水發的撒范德薩范德薩15899903312"; Matcher m = java.util.regex.Pattern.compile("((13//d)|(15//d))//d{8}").matcher(str); while (m.find()){ System.out.PRintln(m.group()); } }}

*運行結果為: 13500006666 13611125565 15899903312*

public class StartEnd { public static void main(String[] args) { String regStr = "Java Is My Love"; Matcher matcher = Pattern.compile("http://w+").matcher(regStr); while (matcher.find()) { System.out.println(matcher.group() + "子串起始位置" + matcher.start() + "子串結束位置" + matcher.end()); } }}

*運行結果: Java子串起始位置0子串結束位置4 Is子串起始位置5子串結束位置7 My子串起始位置8子串結束位置10 Love子串起始位置11子串結束位置15*

*注:上段代碼是對單詞進行分割

public class StringReg { public static void main(String[] args) { String[] msgs = { "Java has regular expressions in 1.4", "regular expressions now expressing in java", "java represses oracular expressions" }; for (String msg : msgs) { System.out.println(msg.replaceFirst("re//w*", "哈哈:)")); System.out.println(Arrays.toString(msg.split(" ")) + "/n"); } }}

*運行結果: [Java, has, regular, expressions, in, 1.4]

哈哈:) expressions now expressing in java [regular, expressions, now, expressing, in, java]

java 哈哈:) oracular expressions [java, represses, oracular, expressions]*

*注:Arrays 類中的靜態方法 Arrays.toString()

public class ReplaceTest { public static void main(String[] args) { String[] msgs = { "Java has regular expressions in 1.4", "regular expressions now expressing in java", "java represses oracular expressions" }; Pattern p = Pattern.compile("re//w*"); Matcher matcher = null; for (String msg : msgs) { if (matcher == null){ matcher = p.matcher(msg); }else{ matcher.reset(msg); } System.out.println(matcher.replaceAll("哈哈:)")); } }}

*運行結果: Java has 哈哈:) exp哈哈:) in 1.4 哈哈:) exp哈哈:) now exp哈哈:) in java java 哈哈:) oracular exp哈哈:)*

*注:此段代碼是用來替換符合re開頭的單詞為–>[ 哈哈:) ]

public static void main(String[] args) { String[] mails = { "kongyeeku@q63.com", "kongyeeku@gmile.com", "liguang@crazyit.org", "wawa@abc.com" }; String mailRegEx = "http://w{3,20}@//w+//.(com|org|cn|net|gov)"; Pattern mailPattern = Pattern.compile(mailRegEx); Matcher matcher = null; for (String mail : mails) { if (matcher == null) { matcher = mailPattern.matcher(mail); } else { matcher.reset(mail); } String result = mail + "/t" + (matcher.matches() ? "yes" : "no") + "/n一個有效的郵箱地址"; System.out.println(matcher + "/t" + result); } }}

*運行結果為: java.util.regex.Matcher[pattern=/w{3,20}@/w+.(com|org|cn|net|gov) region=0,17 lastmatch=kongyeeku@q63.com] kongyeeku@q63.com yes 一個有效的郵箱地址 java.util.regex.Matcher[pattern=/w{3,20}@/w+.(com|org|cn|net|gov) region=0,19 lastmatch=kongyeeku@gmile.com] kongyeeku@gmile.com yes 一個有效的郵箱地址 java.util.regex.Matcher[pattern=/w{3,20}@/w+.(com|org|cn|net|gov) region=0,19 lastmatch=liguang@crazyit.org] liguang@crazyit.org yes 一個有效的郵箱地址 java.util.regex.Matcher[pattern=/w{3,20}@/w+.(com|org|cn|net|gov) region=0,12 lastmatch=wawa@abc.com] wawa@abc.com yes 一個有效的郵箱地址*

*注:Matcher的結果在控制臺輸出的是類似于 java.util.regex.Matcher[pattern=/w{3,20}@/w+.(com|org|cn|net|gov) region=0,17 lastmatch=kongyeeku@q63.com]這樣的字符串


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 格尔木市| 托克逊县| 二连浩特市| 田林县| 海宁市| 屯门区| 姜堰市| 咸丰县| 曲周县| 乌鲁木齐县| 成安县| 克拉玛依市| 宜州市| 清远市| 台湾省| 鄂托克旗| 宁强县| 宜州市| 万安县| 常州市| 洞口县| 云霄县| 青海省| 叶城县| 龙南县| 南宁市| 甘泉县| 锡林郭勒盟| 贵州省| 墨江| 凤冈县| 麻江县| 中方县| 宁海县| 榕江县| 马公市| 涿鹿县| 桦南县| 淳化县| 淅川县| 克东县|