欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java正則表達式用法大全(深度好文)

 更新時間:2023年10月24日 10:14:30   作者:小王寫不出程序  
這篇文章主要給大家介紹了關(guān)于java正則表達式用法大全的相關(guān)資料,正則表達式在處理字符串時非常有用,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

一、概念

正則表達式(regex)是一個字符串,由字面值字符和特殊符號組成,是用來描述匹配一個字符串集合的模式,可以用來匹配、替換和拆分字符串。

例如可以檢查一個字符串是否含有某種子字符串、將匹配的子字符串做替換或者從某個字符串中取出符合某個條件的子字符串等。

二、正則表達式語法

字符匹配示例
  .任意單個字符,除換行符外jav.匹配java
 [  ][ ] 中的任意一個字符java匹配j[abc]va
  - [ ] 內(nèi)表示字符范圍java匹配[a-z]av[a-g]
  ^在[ ]內(nèi)的開頭,匹配除[ ]內(nèi)的字符之外的任意一個字符java匹配j[^b-f]va  
   |x|y匹配x或y
  \將下一字符標記為特殊字符、文本、反向引用或八進制轉(zhuǎn)義符

\(匹配(

$匹配輸入字符串結(jié)尾的位置。如果設(shè)置了 RegExp 對象的 Multiline 屬性,$ 還會與"\n"或"\r"之前的位置匹配。;$匹配位于一行及外圍的;號
*零次或多次匹配前面的字符zo*匹配zoo或z
+一次或多次匹配前面的字符zo+匹配zo或zoo
?零次或一次匹配前面的字符zo?匹配z或zo
p{n}n 是非負整數(shù)。正好匹配 n 次o{2}匹配food中的兩個o
p{n,}n 是非負整數(shù)。至少匹配 n 次o{2}匹配foood中的所有o
p{n,m}M 和 n 是非負整數(shù),其中 n <= m。匹配至少 n 次,至多 m 次o{1,3}匹配fooood中的三個o
\p{P}一個標點字符 !"#$%&'()*+,-./:;<=>?@[\]^_'{|}~J\p{P}a匹配J?a
\b匹配一個字邊界va\b匹配java中的va,但不匹配javar中的va
\B非字邊界匹配va\B匹配javar中的va,但不匹配java中的va
\d數(shù)字字符匹配1[\\d]匹配13
\D非數(shù)字字符匹配[\\D]java匹配Jjava
\w單詞字符java匹配[\\w]ava
\W非單詞字符$java匹配[\\W]java
\s空白字符Java 2匹配Java\\s2
\S非空白字符java匹配 j[\\S]va
\f匹配換頁符等效于\x0c和\cL
\n匹配換行符

等效于\x0a和\cJ

注意:

  • 不要在重復(fù)詞符中使用空白。如B{3,6} ,不能寫成 B{3, 6}。
  • 可以使用括號來將模式分組。(ab){3}匹配ababab , 而ab{3} 匹配 abbb。

三、捕獲組

1. 捕獲組是把多個字符當成一個單獨單元進行處理的方法,它通過對括號內(nèi)的字符分組來創(chuàng)建。

捕獲組通過從左到右計算其括號來編號。

例如:在表達式((A)(B(C))) 中,存在四個這樣的組:

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

2. 捕獲組可以通過調(diào)用matcher對象的groupCount方法來查看表達式有多少個分組。(groupCount方法返回一個int值,來表示matcher對象當前有多少個捕獲組)

3. 還有一個特殊的組零(group(0)),它代表整個表達式。(該組不包括在groupCount的返回值中)

4.  以 (?) 開頭的組是純的非捕獲 組,它不捕獲文本,也不針對組合計進行計數(shù)。

四、Pattern類與Matcher類

Java的正則表達式是由java.util.regex的Pattern和Matcher類實現(xiàn)的。Pattern對象表示經(jīng)編譯的正則表達式。靜態(tài)的compile( )方法負責將表示正則表達式的字符串編譯成Pattern對象。

1.matches( )

boolean flag = str.matches(regex);

可以快速判斷能否在str中找到regex。

2.split( )

String[ ]  ss = s.split(regex);

 用regex把字符串分隔開來,返回String數(shù)組。

3.find( )

while(matcher.find(i)){
i++;
}

Matcher.find( )的功能是發(fā)現(xiàn)CharSequence里的,與pattern相匹配的多個字符序列。

4.group

A(B(C))D 里面有三個組:

group(0) 是 ABCD

group(1) 是 BC

group(2) 是 C

形式為 matcher.group( )

5.start( )和end( )

如果匹配成功,start( )會返回此次匹配的開始位置,end( )會返回此次匹配的結(jié)束位置,即最后一個字符的下標加一。

如果之前的匹配不成功(或者沒匹配),那么無論是調(diào)用start( )還是end( ),都會引發(fā)一 個IllegalStateException。

matcher.start( );
matcher.end( );

6.replace替換

replaceFirst(String replacement)將字符串里,第一個與模式相匹配的子串替換成replacement。

replaceAll(String replacement),將輸入字符串里所有與模式相匹配的子串全部替換成replacement。

String result = s.replaceAll(regex,ss);
String result = s.replaceFirst(regex,ss);

7.reset( )

 用reset( )方法可以給現(xiàn)有的Matcher對象配上個新的CharSequence。

如果不給參數(shù),reset( )會把Matcher設(shè)到當前字符串的開始處。

m.reset("java");

8.代碼演示 

package zuoye2;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EXjava {

	public static void main(String[] args) {
		String example = "This is a small example string";
		Pattern pattern = Pattern.compile("\\w+");
		//如果想忽略大小寫敏感度,可以使用線面這個語句
		//Pattern pattern = Pattern.compile("\\s+",Patttern.CASE_INSENSITIVE);
		Matcher matcher = pattern.matcher(example);
		while(matcher.find()) {
			System.out.print("start index: "+matcher.start());
			System.out.print(" end index: "+ matcher.end()+" ");
			System.out.println(matcher.group());
		}
		//創(chuàng)建一個新的pattern和matcher以用選項卡替換空格s
		Pattern replace = Pattern.compile("\\s+");
		Matcher matcher2 = replace.matcher(example);
		System.out.println(matcher2.replaceAll("\t"));
		
	}
}

五、正則表達式在Java中的應(yīng)用

1.判斷功能

例:判斷輸入的手機號是否為13或者18開頭

package zuoye2;
import java.util.Scanner;
public class EXjava {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("請輸入手機號:");
		String str = input.nextLine();
		String regex = "1[38]\\d{9}";//用正則表達式定義手機號規(guī)則
		boolean flag = str.matches(regex);
		System.out.println("手機號是:"+flag);
		input.close();
	}
}

2.分割功能

例:分割年齡段

package zuoye2;
import java.util.Scanner;
public class EXjava {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);

        String age = "18-30";//定義年齡范圍
		String regex = "-";
		String[] strArr = age.split(regex);//分割成字符串數(shù)組
		
		int startage = Integer.parseInt(strArr[0]);
		int endage = Integer.parseInt(strArr[1]);
		
		System.out.print("請輸入年齡:");
		int a = input.nextInt();
		if(a >= startage && a <= endage) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
		input.close();
	}
}

3.替換功能

例:將字符串的數(shù)字替換成 *

package zuoye2;
import java.util.Scanner;
public class EXjava {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);

        String s = "12342javawang2345";
		String regex = "\\d";
		String ss = "*";
		//將字符串里面的數(shù)字替換成*
		String result = s.replaceAll(regex, ss);
		System.out.println(result);
		
		input.close();
	}
}

總結(jié) 

到此這篇關(guān)于java正則表達式用法大全的文章就介紹到這了,更多相關(guān)java正則表達式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot讀取配置文件常用方法解析

    SpringBoot讀取配置文件常用方法解析

    這篇文章主要介紹了SpringBoot讀取配置文件常用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 淺析java 的 static 關(guān)鍵字用法

    淺析java 的 static 關(guān)鍵字用法

    這篇文章主要介紹了淺析java 的 static 關(guān)鍵字用法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Java畢業(yè)設(shè)計實戰(zhàn)之養(yǎng)老院管理系統(tǒng)的實現(xiàn)

    Java畢業(yè)設(shè)計實戰(zhàn)之養(yǎng)老院管理系統(tǒng)的實現(xiàn)

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+JSP+Easyui+maven+mysql實現(xiàn)一個養(yǎng)老院管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2022-03-03
  • java彩色瓷磚編程題分析

    java彩色瓷磚編程題分析

    這篇文章主要介紹了java彩色瓷磚編程題的詳細解題思路以及解決方法分享,對此有興趣的參考下。
    2018-02-02
  • 詳解spring cloud hystrix請求緩存(request cache)

    詳解spring cloud hystrix請求緩存(request cache)

    這篇文章主要介紹了詳解spring cloud hystrix請求緩存(request cache),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • java連接SQL?Server數(shù)據(jù)庫圖文教程(自用)

    java連接SQL?Server數(shù)據(jù)庫圖文教程(自用)

    在Java應(yīng)用程序中,我們經(jīng)常需要與數(shù)據(jù)庫進行交互,下面這篇文章主要給大家介紹了關(guān)于java連接SQL?Server數(shù)據(jù)庫的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • Spring-Data-JPA整合MySQL和配置的方法

    Spring-Data-JPA整合MySQL和配置的方法

    這篇文章主要介紹了Spring Data JPA整合MySQL和配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • SpringBoot集成Dubbo啟用gRPC協(xié)議

    SpringBoot集成Dubbo啟用gRPC協(xié)議

    這篇文章主要介紹了SpringBoot集成Dubbo啟用gRPC協(xié)議,以及與原生 gRPC 在代碼編寫過程中的區(qū)別。感興趣的同學可以參考閱讀
    2023-04-04
  • java實現(xiàn)簡單撲克牌游戲

    java實現(xiàn)簡單撲克牌游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單撲克牌游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • java使用poi讀取excel內(nèi)容方法實例

    java使用poi讀取excel內(nèi)容方法實例

    本文介紹java使用poi讀取excel內(nèi)容的實例,大家參考使用吧
    2014-01-01

最新評論