1. 程式人生 > 實用技巧 >作業系統實驗四

作業系統實驗四

技術標籤:Java 作業

一、概念

正則表示式,又稱規則表示式。(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),電腦科學的一個概念。正則表示式通常被用來檢索替換那些符合某個模式(規則)的文字。

二、舉例

正則表示式為一個字串,其中[]內的部分代表其中的任意字元。例如[abc]代表a或b或c。我們還可以用[a-z]這種形式代表某一字元區間。
有了正則表示式,我們能很簡潔的去匹配、替換、切割字串。

(1)查詢

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public
class Main { public static void main(String[] args) { //要匹配的字元 String str = "131bcd6fgij"; //正則表示式 //這裡代表第一個字元為1,第二個字元為2,3,7,8,後面9個為小寫字母或數字,且不為5或者h String regex = "1[2378][1-46-9a-gi-z]{9}"; //直接寫 boolean flag1 = str.matches("1[2378][1-46-9a-gi-z]{9}")
; System.out.println(flag1); //或者 boolean flag2 = Pattern.matches(regex, str); System.out.println(flag2); //再或者將給定的正則表示式編譯為模式。 Pattern p = Pattern.compile(regex); //建立一個匹配器,匹配給定的輸入與此模式。 Matcher m = p.matcher(str); //嘗試將整個區域與模式進行匹配。 boolean flag3 = m.matches(); //輸出匹配結果,此次結果為true
System.out.println(flag3); } }

(2)替換

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

	public static void main(String[] args) {
		//要匹配的字元

		String str = "12a6B985Ccv65";

		//正則表示式

		String regex = "[a-zA-Z]+";

		//正則表示式

		String regex2 = "\\d+";
		
		//將字串中英文字母替換為&符號,輸出12&6&985&&&65

		System.out.println(str.replaceAll("[a-zA-Z]", "&"));

		//將字串中連續英文字母替換為&符號,輸出12&6&985&65

		System.out.println(str.replaceAll(regex, "&"));
		
		//將字串中單個數字替換為0,輸出00a0B000Ccv00

		System.out.println(str.replaceAll("\\d","0"));

		//將字串中單個數字或者連續的數字替換為0,輸出0a0B0Ccv0

		System.out.println(str.replaceAll(regex2,"0"));
		
	}

}

(3)切割

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

	public static void main(String[] args) {
		// 要切割的字元

		String str = "2a6B5C65q9";

		// 根據單個數字或者連續數字切割字串
		
		String []arr = str.split("\\d+");
		

		System.out.println(arr.length);
		
		for (String s : arr) {
			System.out.println(s);
		}
		
		// 根據單個數字來切割字串
		
		arr = str.split("\\d");
		
		System.out.println(arr.length);
		
		for (String s : arr) {
			System.out.println(s);
		}
	}

}

開頭存在數字,導致最終分割結果在開頭會多空的字串。
在這裡插入圖片描述

三、正則表示式的部分規則

任意一個字元表示匹配任意對應的字元,如a匹配a,7匹配7,-匹配-。
[]代表匹配中括號中其中任一個字元,如[abc]匹配a或b或c。
-在中括號裡面和外面代表含義不同,如在外時,就匹配-,如果在中括號內[a-b]表示匹配26個小寫字母中的任一個;[a-zA-Z]匹配大小寫共52個字母中任一個;[0-9]匹配十個數字中任一個。
^在中括號裡面和外面含義不同,如在外時,就表示開頭,如^7[0-9]表示匹配開頭是7的,且第二位是任一數字的字串;如果在中括號裡面,表示除了這個字元之外的任意字元(包括數字,特殊字元),如[^abc]表示匹配出去abc之外的其他任一字元。
.表示匹配任意的字元。
\d表示數字。
\D表示非數字。
\s表示由空字元組成,[ \t\n\r\x\f]。
\S表示由非空字元組成,[^\s]。
\w表示字母、數字、下劃線,[a-zA-Z0-9_]。
\W表示不是由字母、數字、下劃線組成。
?:表示出現0次或1次。
+表示出現1次或多次。
*表示出現0次、1次或多次。
{n}表示出現n次。
{n,m}表示出現n~m次。
{n,}表示出現n次或n次以上。
XY表示X後面跟著Y,這裡X和Y分別是正則表示式的一部分。
X|Y表示X或Y,比如"food
(X)子表示式,將X看做是一個整體。

參考部落格:https://www.jianshu.com/p/3c076c6b2dc8