成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文搞懂Java正則表達式

開發 前端
詳解如何在Java中構建正則表達式,并提供一些示例正則表達式。

1 介紹

如果我們想根據特定的模式表示一組字符串,那么我們應該使用正則表達式。

例如,我們可以編寫一個正則表達式來表示所有有效的電子郵件地址,或者我們可以編寫一個正則表達式來驗證有效的電話號碼等。

使用正則表達式的最重要的應用領域是:

  • 開發驗證框架,如Hibernate Validator。
  • 開發模式匹配工具或應用程序,如Linux中的Ctrl+F或grap cmd。
  • 開發數字電路
  • 開發翻譯器,如匯編器、編譯器和解釋器等。
  • 開發通信協議TCP/IP、UDP等。

要在Java中使用正則表達式,我們可以利用java.util.regex包,該包包括以下類:

  • Pattern——這個類是一組可以用于定義各種類型模式的正則表達式的編譯(定義在搜索中使用的模式)。
  • Matcher——這個對象用于在Java中執行匹配操作,用于在輸入字符串中搜索模式。
  • PatternSyntaxException——這個類用于指示正則表達式模式中的語法錯誤。

這里是一個正則表達式的示例代碼片段:

import java.util.regex.*;

public class RegularExpression {

    public static void main(String[] args) {
        int count = 0;
        Pattern pattern = Pattern.compile("ab");
        Matcher matcher = pattern.matcher("abcbcbcababacb");
        while (matcher.find()) {
            ++count;
            System.out.println(matcher.group()+ "...... found at: "+matcher.start());
        }

        System.out.println("The Total number of occurrence is " + count);

    }
}

/****
  Output-
  ab...... found at: 0
  ab...... found at: 7
  ab...... found at: 9
  The Total number of occurrence is 3
****/

2 Pattern

Pattern是一個已編譯的正則表達式,即Java中的模式等價物。我們可以使用Pattern類的compile()方法創建一個模式對象。Pattern類的compile()方法的簽名如下:

Flags——compile()方法中的標志會改變搜索的方式。以下是其中幾個:

  • CASE_INSENSITIVE——在執行搜索時將忽略字母的大小寫。
  • UNICODE_CASE——與CASE_INSENSITIVE標志一起使用,它會忽略英語字母以外的字母的大小寫。
  • LITERAL——使用時,模式中的特殊字符將不具有任何特殊含義,在執行搜索時只被視為普通字符。
public static Pattern compile(String regex)

以下是Pattern類compile()方法的一個示例:

Pattern pattern = Pattern.compile("ab");

3 Matcher

matcher對象可用于檢查目標字符串中的指定模式。使用Pattern類的matcher()方法,我們可以生成一個匹配器對象。Pattern類的matcher()方法具有以下簽名:

public Matcher matcher(CharSequence input)

以下是Pattern類matcher()方法的示例:

Matcher matcher = pattern.matcher("abcbcbcababacb");

Matcher類存在于java.util.regex包中。以下是Matcher類一些最重要的方法:

  • boolean find()——這個方法嘗試查找下一個匹配項,在找到匹配項時返回true,否則返回false。
  • int start()——這個方法返回匹配項在輸入字符串中的起始索引。
  • int end()——這個方法返回匹配項在輸入字符串中的結束索引。
  • String group()——這個方法返回匹配的模式。

注意:Pattern和Matcher類存在于java.util.regex包中,從java1.4v開始引入。

4 字符類

  • [abc]——要么是'a'、'b'或'c'
  • [^abc]——除了'a'、'b'和'c'
  • [a-z]——任何從a到z的小寫字母符號
  • [A-Z]——任何從A到Z的大寫字母符號
  • [a-zA-Z]——任何字母符號
  • [0–9]——任何0到9的數字
  • [a-zA-Z0–9]——任何字母數字符號
  • [^a-zA-Z0–9]——除了字母數字符號(僅限特殊字符)

5 預定義字符類

  • .——除換行符外的任何字符
  • \d——數字(0-9)
  • \D——非數字(0-9)
  • \w——單詞字符(a-z、A-Z、0-9、_)
  • \W——非單詞字符
  • \s——空格(空格、制表符、換行符)
  • \S——非空格(空格、制表符、換行符)
  • \b——單詞邊界
  • \B——非單詞邊界
  • \uxxxx——由十六進制數xxxx指定的Unicode字符

6 量詞符

  • *——0次或多次
  • +——1次或多次
  • ?——0次或1次
  • {3}——精確數量3次
  • {3,4}——數字范圍(最小值,最大值)

我們可以使用量詞符指定要匹配的出現次數。

Pattern類的split()方法

要根據特定的模式拆分目標字符串,我們可以使用Pattern類的split()方法。Pattern類的split()方法具有以下簽名:

public String[] split(CharSequence input)

為了方便,我在這里包含了Pattern類split()方法的代碼片段:

public class RegularExpression {

    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("\\s");
        String[] splitString = pattern.split("Pattern class is present in java.util.regex");
        for (String text : splitString) {
            System.out.println(text);
        }

    }
}

/***
  Output -
    Pattern
    class
    is
    present
    in
    java.util.regex
***/

在上面的示例中,根據空格(\s)分割了字符串。

String類的split()方法

String類也包含split()方法。字符串類的split()方法用于根據特定模式拆分目標字符串。

public class RegularExpression {

    public static void main(String[] args) {
        String text = "This is example of String class split() method";
        String[] strings = text.split("\\s");
        for (String s : strings) {
            System.out.println(s);
        }
    }
}

/***
Output
  This
  is
  example
  of
  String
  class
  split()
  method
***/

在上面的例子中,字符串是根據空白(\s)來劃分的。

注意:Pattern類的split()方法可以接受一個目標字符串作為參數,而String類的split()方法可以接受一個正則表達式作為參數。

7 StringTokenizer

StringTokenizer是專門用于標記化任務的類。Java.util包中有一個StringTokenizer類。

public class StringTokenizerDemo {

    public static void main(String[] args) {
     
        StringTokenizer tokenizer = new StringTokenizer("StringTokenizer class present in java.util package");
        while (tokenizer.hasMoreTokens()) {
            System.out.println(tokenizer.nextToken());

        }
    }
}

/***
  Output -
    StringTokenizer
    class
    present
    in
    java.util
    package
***/

注意:StringTokenizer的默認正則表達式為空格符(\s)。

我們也可以根據需要傳遞正則表達式,以下是代碼片段有助于你更好地理解:

StringTokenizer tokenizer = new StringTokenizer("05-21-2023","-");
while (tokenizer.hasMoreTokens()) {
    System.out.println(tokenizer.nextToken());
}
/***
  Output
    05
    21
    2023
***/

我列了一些常用的編程正則表達式:

圖片

責任編輯:武曉燕 來源: Java學研大本營
相關推薦

2024-08-07 10:54:59

正則表達式Java RegexJava

2020-09-18 06:42:14

正則表達式程序

2009-02-18 09:48:20

正則表達式Java教程

2016-11-10 16:21:22

Java 正則表達式

2020-09-04 09:16:04

Python正則表達式虛擬機

2018-09-27 15:25:08

正則表達式前端

2024-09-14 09:18:14

Python正則表達式

2011-07-11 12:33:30

JAVA

2023-10-07 08:25:09

Java處理工具正則表達式

2009-06-08 16:49:05

Java正則表達式group

2022-03-28 06:19:14

正則表達式開發

2019-07-17 15:45:47

正則表達式字符串前端

2021-01-27 11:34:19

Python正則表達式字符串

2009-09-16 18:19:34

正則表達式組

2011-06-02 12:34:16

正則表達式

2017-05-12 10:47:45

Linux正則表達式程序基礎

2010-03-25 18:25:36

Python正則表達式

2009-09-16 17:15:57

正則表達式引擎

2022-01-04 11:35:03

Linux Shel正則表達式Linux

2023-09-13 08:12:45

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 羞羞在线观看视频 | cao在线| 91资源在线 | 亚洲男女激情 | 国产亚洲成av人片在线观看桃 | 热re99久久精品国产99热 | 亚洲高清在线 | 久久精品色欧美aⅴ一区二区 | 国产精选一区 | 韩日在线视频 | 精品久久ai电影 | 在线成人www免费观看视频 | 黄色一级电影免费观看 | 国产成人一区二区三区久久久 | 91色在线视频 | 综合五月婷| 国产精品爱久久久久久久 | 国产成人精品一区二区三区 | 午夜影院在线免费观看视频 | 国产日韩欧美一区二区 | www.一区二区三区 | 久久丁香| 成人av片在线观看 | 罗宾被扒开腿做同人网站 | 久久这里有精品 | 久久国产一区 | 国产九九九九 | 久久亚洲一区二区三区四区 | 在线视频一区二区 | 亚洲精品电影在线观看 | 欧洲视频一区二区 | 欧美福利在线 | 日本久久久久久久久 | 国产精品日韩一区二区 | 三级黄色片在线观看 | 欧美日韩国产精品一区 | 亚洲一区二区精品视频在线观看 | 久久成人综合 | 91av久久久| 久久久噜噜噜www成人网 | 五月天婷婷久久 |