您好,登錄后才能下訂單哦!
本篇內容介紹了“ 怎么使用正則表達式”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
編程總在實踐中出結果!
正則表達式,又稱規則表達式。(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。
正則引擎主要可以分為兩大類:一種是DFA,一種是NFA。這兩種引擎都有了很久的歷史(至今二十多年),當中也由這兩種引擎產生了很多變體!于是POSIX的出臺規避了不必要變體的繼續產生。這樣一來,主流的正則引擎又分為3類:一、DFA,二、傳統型NFA,三、POSIX NFA。
正則也是一種非常有意思的技術,但往往不知道這些符號的編程在實際使用中該如何使用,因此總結了本篇文章,方便所有小伙伴可以當成一個工具文章使用,方便處理一些需要使用正則的技術內容。
"a".matches(".")
"a".matches("[abc]")
"a".matches("[^abc]")
"A".matches("[a-zA-Z]")
"A".matches("[a-z]|[A-Z]")
"A".matches("[a-z(A-Z)]")
"R".matches("[A-Z&&(RFG)]")
"a_8".matches("\\w{3}")
"\\".matches("\\\\")
"hello sir".matches("h.*")
"hello sir".matches(".*ir$")
"hello sir".matches("^h[a-z]{1,3}o\\b.*")
"hellosir".matches("^h[a-z]{1,3}o\\b.*")
" \n".matches("^[\\s&&[^\\n]]*\\n$")
^[\\s&&[^\\n]]
,且不能是換行符,最后必須是換行
\\n$
System.out.println("java".matches("(?i)JAVA"));
Pattern p = Pattern.compile("[a-z]{3,}");
Matcher m = p.matcher("fgha");
System.out.println(m.matches()); // true,匹配字符3次及以上
Pattern p = Pattern.compile("\\d{3,5}");
Matcher m = p.matcher("123-4536-89789-000");
System.out.println(m.matches());
m.reset();// 把吃進去的字符吐出來重新匹配,否經過m2.matches會吃進去字符 下面的匹配就不成功
System.out.println(m.find());
System.out.println(m.start() + "-" + m.end()); // 找到了 就把首位位置打印下(必須找到才能打印)
System.out.println(m.find());
System.out.println(m.start() + "-" + m.end()); // 找到了 就把首位位置打印下(必須找到才能打印)
System.out.println(m.find());
System.out.println(m.start() + "-" + m.end()); // 找到了 就把首位位置打印下(必須找到才能打印)
System.out.println(m.find());
System.out.println(m.lookingAt()); //每次都是才頭上開始找
測試結果
false
true
0-3
true
4-8
true
9-14
true
true
Pattern p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("java_Java_jAva_jAVa_IloveJava");
System.out.println(m.replaceAll("JAVA"));
Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("java_Java_jAva_jAVa_IloveJava fdasfas");
StringBuffer sb = new StringBuffer();
int i = 0;
while (m.find()) {
i++;
if (i % 2 == 0) {
m.appendReplacement(sb, "java");
} else {
m.appendReplacement(sb, "JAVA");
}
}
m.appendTail(sb);
System.out.println(sb);
i % 2
,進行單雙數替換匹配 Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");
Matcher m = p.matcher("123bb_78987dd_090po");
while(m.find()){
System.out.println(m.group(1));
}
結果:
123
78987
090
Process finished with exit code 0
描述:分組加括號只取數字一組,grop括號里面第0組是整體,第一組是左起第一個括號,第二組是左起第二個括號
Pattern p = Pattern.compile("(.{3,10}?)[0-9]");
Matcher m = p.matcher("aaaa5dddd8");
while (m.find()) {
System.out.println(m.start() + "-" + m.end());
}
結果:
0-5
5-10
Process finished with exit code 0
描述:.{3,10}后面沒問號就是貪婪匹配會配到最長,如果{3,10}?加?號就是懶蛋匹配之匹配最少的,從3個開始找。如果這里用if(m.find)(){m.start()+"-"+m.end()} 那么之匹配第一個
Pattern p = Pattern.compile(".{3}");
Matcher m = p.matcher("ab4dd5");
while(m.find()){
System.out.println(m.group());
}
結果:
ab4
5-10
Process finished with exit code 0
描述:每次匹配三個任意字符,用 m.group() 輸出。
Pattern p = Pattern.compile(".{3}(?=a)");
Matcher m = p.matcher("ab4add5");
while (m.find()) {
System.out.println("后面不能是a的:" + m.group());
}
后面不能是a的:ab4
Pattern p = Pattern.compile("(?!a).{3}");
Matcher m = p.matcher("abbsab89");
while (m.find()) {
System.out.println("前面不能是a的:" + m.group());
}
Pattern p = Pattern.compile("(?!>).+(?=<)");
Matcher m = p.matcher(">小傅哥<");
while (m.find()) {
System.out.println(m.group());
}
Pattern p = Pattern.compile("(\\d\\d)\\1");
Matcher m = p.matcher("1212");
System.out.println(m.matches());
“ 怎么使用正則表達式”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。