Java 正則表達式中分組的3種不同用法,乾貨分享!

2020-12-08 時代Java

正則表達式中分組說明

正則表達式可以通過」()」來進行分組,更專業的表達就是捕獲組,每個完整的」()」可以分為一組,同時,」()」中還可以嵌套」()」,即組之間還可以存在更小的組,以此類推。而編號為0的組,則是正則表達式匹配到的整體,這個規則只要支持正則表達式中捕獲組的語言基本上都適用。

捕獲組就是把正則表達式中子表達式匹配的內容,保存到內存中以數字編號或顯式命名的組裡,方便後面引用。當然,這種引用既可以是在正則表達式內部,也可以是在正則表達式外部。

Java程序也可以正則表達式完美融入到程序中,而且非常好用,下面介紹幾種不同的用法,可以根據自己應用需要進行選擇。

普通捕獲組編號規則

如果沒有顯式為捕獲組命名,即沒有使用命名捕獲組,那麼需要按數字順序來訪問所有捕獲組。在只有普通捕獲組的情況下,捕獲組的編號是按照「(」出現的順序,從左到右,從1開始進行編號的 。

正則表達式分組舉例:(\d{4})-(\d{2}-(\d\d))

1、在正則表達式中使用組

import java.util.regex.Pattern;

import java.util.regex.Matcher;

public class Main {

public static void main(String[] args) {

// Prepare regular expression. A group of 3 digits followed by 7 digits.

String regex = "\\b(\\d{3})\\d{7}\\b";

String source = "1111111111, 1111111, and 1111111111";

// Compile the regular expression

Pattern p = Pattern.compile(regex);

// Get Matcher object

Matcher m = p.matcher(source);

// Start matching and display the found area codes

while(m.find()) {/** 來 自 時 代 J a v a - nowjava.com**/

// Display the phone number and area code.

// group 1 captures first 3 digits of match,

// whereas group 0 will have the entire phone number.

// The matched text can be obtained using m.group() or m.group(0)

String phone = m.group();

String areaCode = m.group(1);

System.out.println("Phone: " + phone + ", Area Code: " + areaCode);

}

}

}

2、在正則表達式中使用命名組

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Main {/**來 自 n o w j a v a . c o m**/

public static void main(String[] args) {

// Prepare the regular expression

String regex = "\\b(?<areaCode>\\d{3})(?<prefix>\\d{3})(?<lineNumber>\\d{4})\\b";

// Reference first two groups by names and the thrd oen as its number

String replacementText = "(${areaCode}) ${prefix}-$3";

String source = "1111111111, 1111111, and 1111111111";

// Compile the regular expression

Pattern p = Pattern.compile(regex);

// Get Matcher object

Matcher m = p.matcher(source);

// Replace the phone numbers by formatted phone numbers

/**

來 自 時 代 J a v a 公 眾 號

**/

String formattedSource = m.replaceAll(replacementText);

System.out.println("Text: " + source);

System.out.println("Formatted Text: " + formattedSource);

}

}

3、返回替換文本中引用組

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Main {

public static void main(String[] args) {

String regex = "\\b(\\d{3})(\\d{3})(\\d{4})\\b";

String replacementText = "($1) $2-$3";

String source = "1111111111, 1111111, and 1111111111";

// Compile the regular expression

Pattern p = Pattern.compile(regex);

// Get Matcher object

Matcher m = p.matcher(source);

/** from N o w J a v a . c o m - 時代Java**/

// Replace the phone numbers by formatted phone numbers

String formattedSource = m.replaceAll(replacementText);

System.out.println("Text: " + source );

System.out.println("Formatted Text: " + formattedSource );

}

}

相關焦點

  • java正則表達式入坑指南
    在日常開發工作中,無論你使用的語言是java、python、shell、golang還是C#, 正則表達式是程式語言中幾乎繞不開的話題。有了它,可以幫你快速定位到符合條件的文本內容。今天小編帶大家一起來學習下正則表達式,相信通過這篇文章的介紹,能為以後的工作提供一個更清晰的思路。
  • 給JAVA程式設計師的正則表達式一課
    正則表達式和SQL語言是開發界的兩個偉大發明。正則表達式可以用於:驗證用戶的輸入。搜索給定數據中的文本。(可在文本編輯器中使用)編譯器中的解析器語法突顯,數據包嗅探器等。在任何表達式中添加「^」會否定該表達式的含義,例如[^abc]表示匹配任何除abc外的任何字符。()表示分組,分組後可以在後續反向引用。反向引用存儲與組匹配的字符串部分。可以使用符號$來引用特定的組。$1,$2…代表第一組1,第2組等。默認組為$0,表示字符串本身。例如,我們要刪除行中的所有空格。
  • Python 正則表達式-函數用法分析
    【函數一】compile(pattern, flags=0)我們編寫的正則表達式 pattern,指定使用的模式 flags 默認為0 即不使用任何模式【函數二】 purge()這個函數的作用是清除緩存中的正則表達式【函數三】escape(pattern)如果需要操作的文本中含有正則的元字符時,需要將元字符加上反斜扛
  • 正則表達式斷言精講Java語法實現
    斷言本文目的是講解正則表達式之斷言用法。目前網際網路上有很多博文對斷言講解的並不透徹,如果您剛開始學習斷言,相信此博文會對您有幫助。1.2.3.1 情景導入假設,我要獲得一個字符串裡面所有以空格開頭的英文詞語。
  • python正則表達式使用方法說明
    曾光紅/文 (同步發布豆瓜網)一、導入re庫python使用正則表達式要導入re庫。import re在re庫中。正則表達式通常被用來檢索查找、替換那些符合某個模式(規則)的文本。二、使用正則表達式步驟1、尋找規律;2、使用正則符號表示規律;3、提取信息,如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。
  • 原創通俗易懂的Python的正則表達式,建議收藏
    正則表達式正則表達式是一個特殊的字符序列,由普通字符和元字符組成。元字符能幫助你方便的檢查一個字符串是否與某種模式匹配。正則表達式應用的場景也非常多。常見的比如:搜尋引擎的搜索、爬蟲結果的匹配、文本數據的提取等等都會用到,所以掌握甚至精通正則表達式是一個硬性技能,非常必要。
  • 8分鐘看完,徹底掌握Java正則表達式的十大問題!
    這篇文章總結了有關Java正則表達式的主要問題。希望可以給同學們帶來java學習路上的成長!1.如何從字符串中提取數字?使用正則表達式的一個常見問題是將所有數字提取到整數數組中。3. Pattern.compile()的重要性必須先將指定為字符串的正則表達式編譯為Pattern類的實例。圖案。compile()方法是創建對象實例的唯一方法。
  • Java 正則表達式用法總結二
    註:1)() 一組字符,並且關係;2){} 量詞,出現次數;3)[]一組字符,或關係X? 不匹配或一次匹配;X+ 一次匹配或多次匹配;X* 不匹配或多次匹配;X{n} 匹配n次X{n,} 匹配至少n次,無上限X{n,m} 匹配至少n次,但不超過m次例如:表達式:a?
  • Python中的正則表達式
    正則表達式進行匹配的流程如下圖所示:正則表達式匹配過程是:依次拿出表達式和文本中的字符比較,如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。正則表達式基本語法下面我們通過下表來學習一下正則表達式中的元字符和含義:*注意事項:(1)數量詞的貪婪模式與非貪婪模式正則表達式通常用於在文本中查找匹配的字符串。
  • Java中Lambda表達式的5種不同語法
    箭頭標記 ->3. 主體,由單個表達式或語句塊組成。在這種情況下,它是一個單一表達式-Integer.compare(m.length(), n.length())Output:[a, is, java, site, creek, program]2.可以推斷參數類型
  • JavaScript-正則表達式中的修飾符和對象有哪些?
    >(1)/frank/i是一個正則表達式(2)frank是這個正則表達式的主體,表示想要檢索的內容是frank(3)i 是一個正則表達式的修飾符,表示檢索內容時不區分大小寫1.3 正則表達式常見用法正則表達式在實際開發中一般不會單獨使用
  • 超好用的6種正則表達式,前端開發人員必知!
    幾乎所有流行的程式語言都支持正則表達式,原因如下:正則表達式為開發人員提供了強有力的工具,使之能快速執行需要幾十行代碼才能完成的任務。本文主要研究前端開發人員經常要面對的六大文本處理和操作任務,並進一步了解正則表達式如何簡化這一過程。但也只是觸及了正則表達式潛力之皮毛。1.
  • Linux系統正則表達式用法筆記
    正則表達式:能用某種模式去匹配一類字符串的公式,它是由一串字符和元字符組成的字符串。元字符就是闡述字符表達式的內容、轉換和描述各種操作信息的字符。常見的一些基礎的正則表達式1、「.」圓點符號用來匹配除換行符之外的任意一個字符。
  • Shell—正則表達式(grep命令、sed工具)
    前言正則表達式對於系統管理員來說是非常重要的,熟練運用正則表達式可使工作變得更加簡單、方便。一、正則表達式概述正則表達式定義正則表達式,又稱正規表達式、常規表達式使用字符串來描述、匹配一系列符合某個規則的字符串簡單來說,是一種匹配字符串的方法,通過一些特殊符號,實現快速查找、刪除、替換某個特定字符串。
  • 正則表達式:如何匹配一個或多個字符?
    因為本身是純文本,所以看起來可能不像是一個正則表達式,但它的確是。正則表達式可以包含純文本(甚至可以只包含純文本)。當然,像這樣使用正則表達式是一種浪費,但把它作為我們學習正則表達式的起點還是很不錯的。我們來看一個例子:這裡使用的正則表達式是純文本,它將匹配原始文本裡的Ben。
  • Python正則表達式:特殊符號和字符
    正表達式為高級的文本模式匹配,抽取,與/或文本形式的搜索和替換功能提供了基礎。簡而言之,正則表達式(簡稱regex)是由一些字符和特殊符號組成的字符串,它描述了模式的重複或者表達多個字符。python通過標準庫中的re模塊來支持正則表達式。
  • Java之Runnable表達式的簡單介紹
    各位小夥伴們大家好,這次小編要介紹的是Runnable表達式當我們要啟動一個線程去完成任務的時候,通常的做法會通過java.lang.Runnable接口來定義任務內容,並使用java.lang.Thread類來啟動線程,代碼如下:/*創建Runnable接口的實現類,重寫
  • Python中使用re模塊實現正則表達式的分割字符串操作
    第八十四節:正則表達式實現分割字符串操作分割字符串的方法在前面就學習過,用正則表達式實現分割字符串,使用的依然是split()方法,分割後也是返回一個列表,不同點在哪裡呢?先回憶一下直接使用split()方法分割字符串的語法格式Python中如何分割、合併字符串:str.split(sep,maxsplit)再來看使用正則表達式正則表達式的基礎知識和Python中的基本應用來分割字符串的語法格式:re.split(pattern,str,maxsplit,flags)兩相比較,就可以直觀的發現相同點和不同點了
  • Python學習第137課——正則表達式中實現可選規則
    正則表達式英文是Regular Expression,各種程式語言中都是把它簡寫成Regex,或者Regexp或者re。這節我們學習如何在正則表達式中實現可選規則。●用小括號和pipe(豎線|)實現每一個可選項例1:現在假設我們有一個應答機器人,接到了很多很多用戶的留言,這些留言中包括用戶自己的姓名、聯繫電話等信息。
  • 怎樣用正則表達式判斷輸入框中是否是車牌號
    我們在製作網頁時,會經常性的遇到判斷輸入框的輸入內容的問題,有時我們會單純的判斷長度,有時既要判斷輸入字符的長度,又要判斷其是否符合規定,下面小漁來教大家一個簡便的方法判斷輸入框中是否為車牌號【新建一個html文件】首先我們需要新建一個html文件,html頁面中主要列出兩個input,一個div,並為其添加相應的樣式即可