最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

正則表達(dá)式的整理與歸納(附例子)

 更新時(shí)間:2026年03月06日 09:31:49   作者:The?Elden?Lord  
正則表達(dá)式由普通字符和特殊字符組成,用于匹配字符串模式,元字符包括點(diǎn)號(hào)、中括號(hào)、豎線、^、$、\等,用于指定匹配規(guī)則,這篇文章主要介紹了正則表達(dá)式整理與歸納的相關(guān)資料,需要的朋友可以參考下

正則表達(dá)式是由普通字符(a-z)和特殊字符(元字符)組成的文本模式。例如,在正則表達(dá)式“[a-z]*”描述了所有僅包含小寫字母的字符串,其中a,z為普通字符,連字符、左右中括號(hào)及星號(hào)則為元字符

正則表達(dá)式中的元字符的類別

1. 點(diǎn)號(hào)

點(diǎn)號(hào)可以匹配除“\n”之外的任何單字符 。

2. 中括號(hào)

可以在中括號(hào)([])內(nèi)指定需要匹配的若干字符,表示僅使用這些字符參與匹配。

3. 豎線

豎線(|)可以匹配其左側(cè)或右側(cè)的符號(hào)。

4. ^符號(hào)

^符號(hào)可以匹配一行的開始。

5. 美元符號(hào)

美元符號(hào)($)可以匹配一行的結(jié)束。

6. 反斜線

反斜線()表示其后的字符是普通字符而非元字符。

常用的匹配次數(shù)元符號(hào)

元字符含義
X*匹配X出現(xiàn)零次或多次,如Y、YXXXY
X+匹配X出現(xiàn)一次或多次,如YXY、YXX
X?匹配X出現(xiàn)零次或一次,如Y、YXY
X{n}匹配X恰好出現(xiàn)n次
X{n,}匹配X出現(xiàn)至少n次
X{n,m}n<=m,匹配X出現(xiàn)至少n次,最多m次

預(yù)定義字符(只匹配一個(gè)字符)

元字符含義
\d數(shù)字,相當(dāng)于[0-9]
\D非數(shù)字,相當(dāng)于[^0-9]
\s空白字符,相當(dāng)于[\t\n\x0B\f\r]
\S非空白字符,相當(dāng)于[^\s]
\w單詞字符,相當(dāng)于[a-zA-Z_0-9]
\W非單詞字符,相當(dāng)于[^\w]
\b單詞邊界
\B非單詞邊界
\A輸入的開頭
\G上一個(gè)匹配的結(jié)尾

自定義字符(只匹配一個(gè)字符)

元字符含義
[abc]只能是a,b或c
[^abc]除了a,b,c之外的任何字符
[a-zA-Z]a到z A到Z,包括(范圍)
[a-d[m-p]]a到d,或m到p
[a-z&&[bcd]]a-z和bcd的交集,為b,c,d
[a-z&&[^bcd]]a-z和非bcd的交集,等同于[ae-z]
[a-z&&[^m-p]]a-z和除了m到p的交集,等同于[a-lq-z]

舉例如下

import java.util.ArrayList;
import java.util.List;
//通過正則表達(dá)式來提取訪問數(shù)據(jù)中的人物姓名并進(jìn)行去重
public class MyMain {

    public static void main(String[] args) {
        String log = "張三10:23:0:802023-10-09 09:21:22"
                + "李四115:203:10:1802023-05-09 19:21:22"
                + "王五115:203:10:1802023-05-09 19:21:22"
                + "張三11:22:0:802024-11-09 07:21:25";

        // 解析出姓名并寫入到List
        String[] nameIPs = log.split("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}");

        // 該List中的姓名可能會(huì)出現(xiàn)重復(fù)
        List<String> names = new ArrayList<String>();

        for(String nameIP : nameIPs) {
            int index = -1;
            //找到第一個(gè)數(shù)字的地址,結(jié)束內(nèi)層循環(huán)
            for (int i = 0; i < nameIP.length(); i++) {
                if(nameIP.charAt(i) >= '0' && nameIP.charAt(i) <= '9') {
                    index = i;
                    break;
                }
            } // 內(nèi)層for
            //截取名字部分,即從零到第一個(gè)數(shù)字的部分
            String name = nameIP.substring(0, index);
            //向集合之中添加該名字
            names.add(name);
        }

        // 對(duì)List中的姓名去重
        // 該List中的姓名是唯一的
        //定義一個(gè)新的集合,用來存放不重復(fù)的名字
        List<String> nameUniques = new ArrayList<String>();
        for(String name : names) {
            if(!nameUniques.contains(name)) {
                nameUniques.add(name);
            }
        }

        for(String name : nameUniques) {
            System.out.println(name);
        }
    }

}

運(yùn)行結(jié)果

其它方面的細(xì)節(jié)及注意事項(xiàng)

  1. \為轉(zhuǎn)義字符,用于改變后面那個(gè)字符原本的含義,在程序中\(zhòng)\d才表示一個(gè)\d的含義。
  2. 正則表達(dá)式是從左到右一個(gè)一個(gè)去匹配的,一個(gè)表達(dá)式只對(duì)應(yīng)一個(gè)字符。
  3. matches()方法可以用于判斷一個(gè)字符串是否滿足對(duì)應(yīng)的正則表達(dá)式,并返回結(jié)果true或者false。
  4. 如果要求兩個(gè)范圍的交集,需要寫符號(hào)&&,若只寫一個(gè)&,則只表示一個(gè)&符號(hào)。

總結(jié) 

到此這篇關(guān)于正則表達(dá)式整理與歸納的文章就介紹到這了,更多相關(guān)正則表達(dá)式例子內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

博湖县| 宜丰县| 九江市| 郎溪县| 浮梁县| 鄂温| 山丹县| 同心县| 唐海县| 南召县| 湖州市| 普洱| 鲜城| 饶阳县| 九龙城区| 响水县| 唐山市| 淳安县| 荔波县| 彰武县| 团风县| 湟中县| 汾西县| 英德市| 南投市| 定西市| 汉川市| 陇南市| 石棉县| 商水县| 红安县| 沧源| 玛多县| 榆树市| 山东| 威海市| 金平| 光泽县| 华阴市| 秀山| 承德县|