1. 程式人生 > 其它 >如何用 C++ 復現《千本櫻》

如何用 C++ 復現《千本櫻》

一、為什麼要學習正則表示式

1、為了解決上述問題。Java提供了正則表示式技術,專門來處理類似於文字問題

2、簡單來說:正則表示式是對字串進行模式匹配的技術

3、正則表示式:regular expression => regexp


二、正則表示式語法

1、元字元-轉義號 \\

在我們使用正則表示式去檢索某些特殊字元的時候,需要用到轉義符號,否則檢索不到結果,甚至會報錯

例如 用$去匹配 "abc$"

需要用到轉義符號的字元有以下: + () $ / \ ? [ ] ^ {}


2、元字元-字元匹配符


1)[a-z]說明:表示可以匹配a-z中的任意一個字元

//String regStr = "[a-z]";      //匹配a-z之間的任意一個字元
//String regStr = "[A-Z]"; //匹配[A-Z]之間的任意一個字元


2)java正則表示式是預設區分大小寫的,如何實現不區分大小寫

String regStr = "abc";          //匹配abc字串【預設區分大小寫】
// String regStr = "(?i)abc";          //匹配abc字串【不區分大小寫】

//1、當建立Pattern物件是,指定Pattern.CASE_INSENSITIVE,表示匹配不區分字母大小寫
Pattern pattern = Pattern.compile(regStr,Pattern.CASE_INSENSITIVE);


3)[^a-z]表示匹配不是a-z的所有字元

4)[abcd] 表示可以匹配abcd中的任意一個字元

5)[^abcd]表示匹配不是abcd中的任意一個字元

6)\\d表示可以匹配0-9中的任意一個數字,相當一[0-9]

7)\\D表示可以匹配不是0-9中的任意一個數字,相當於[^0-9]

8)\\w匹配任意英文字元,數字和下劃線,相當於[a-zA-Z0-9_]

9)\\W相當於[^a-zA-Z0-9_]

10)表示匹配任何空白字串(空格,製表符等)

11)\\S匹配任何非空白字元

12) . 匹配\n之外的所有字元,如果需要匹配,如果需要匹配 . 本身,則需要使用 \\.

public class RegexpTest3 {
    public
static void main(String[] args) { String content = "aabcbzABCF8hGgh"; //String regStr = "[a-z]"; //匹配a-z之間的任意一個字元 //String regStr = "[A-Z]"; //匹配[A-Z]之間的任意一個字元 //String regStr = "abc"; //匹配abc字串【預設區分大小寫】 // String regStr = "(?i)abc"; //匹配abc字串【不區分大小寫】 String regStr = "[^a-z]"; //匹配不是a-z之間的任意一個字元 //1、當建立Pattern物件是,指定Pattern.CASE_INSENSITIVE,表示匹配不區分字母大小寫 Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()){ System.out.println("找到:"+matcher.group(0)); } } }


3、選擇匹配符

在匹配某個字串的時候是選擇性的,即:即可以匹配這個,也可以匹配哪個,這是需要用到選擇

匹配符號 |


public class RegexpTest4 {
    public static void main(String[] args) {
        String content = "aabcbzABCF寒 函 han8hGgh";
        String regStr = "函|han|寒";      //匹配不是a-z之間的任意一個字元
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            System.out.println("找到:"+matcher.group(0));
        }
    }
}