java正則表示式之捕獲分組與Back引用
一.捕獲分組
java正則表示式中以()括起來的內容表示一個分組,像((A)(B(C)))這個表示式中,共存在四個分組:
1.ABC
2.A
3.BC
4.C
很容易發現,分組是按照左邊的括號出現的順序來標號的
這就是捕獲分組
二.Back引用
我們以下面這個正則表示式為例:
這個正則表示式在匹配的過程中,先匹配雙引號"或者單引號',如果匹配的話,將其記為分組1;
然後匹配接下來的字元,雖然可以是任意多個的任意字元,但要想匹配該正則表示式,還需要匹配最後一項\1;
匹配\1指的是匹配分組1,即:
如果分組1是雙引號",最後必須有一個雙引號";
如果分組1是單引號',最後必須有一個單引號';
很明顯,像"abc"或'abc'可以匹配,而"abc'或'abc"就不能匹配
-------------------------------------------------------------------------------------------------------------------
後記:如有錯誤請指出:)
相關推薦
java正則表示式之捕獲分組與Back引用
一.捕獲分組 java正則表示式中以()括起來的內容表示一個分組,像((A)(B(C)))這個表示式中,共存在四個分組: 1.ABC 2.A 3.BC 4.C 很容易發現,分組是按照左邊的括號出現的順序來標號的 這就是捕獲分組 二.Back引用 我們以下面這個正則表示式為例
JAVA正則表示式高階用法(分組與捕獲)
正則表示式在字串處理中經常使用,關於正則簡單的用法相信有一點程式基礎的人都懂得一些,這裡就不介紹簡單基礎了。這裡主要講解一下在JAVA中實現了的正則的高階用法-分組與捕獲。 對於要重複單個字元,非常簡單,直接在字元後賣弄加上限定符即可,例如 a+ 表示匹配1個或
Java正則表示式之分組和替換
正則表示式的子表示式(分組)不是很好懂,但卻是很強大的文字處理工具。 1 正則表示式熱身 匹配電話號碼 // 電話號碼匹配 // 手機號段只有 13xxx 15xxx 18xxxx 17xxx System.out.println("18304
正則表示式——非捕獲分組
目前為止,總共介紹了括號的三種用途: 分組,將相關的語速歸攏到一起,構成單個元素;多選結構,規定可能出現的多個子表達示;引用分組,將子表示式匹配的文字儲存起來,供之後引用。 這三種用途並不是彼此獨立的,而是互相重疊的: 單純的分組可以視為“只包含一個多選分支的多選結構”;整個多選結構也會被視為單個元
JAVA正則表示式:Pattern類與Matcher類詳解
java.util.regex是一個用正則表示式所訂製的模式來對字串進行匹配工作的類庫包。它包括兩個類:Pattern和Matcher Pattern 一個Pattern是一個正則表示式經編譯後的表現模式。 Matcher 一個Matcher物件是一個狀態機器,它依據Pattern物件做為匹
正則表示式之貪婪匹配與非貪婪匹配
. :匹配除 "\n" 之外的任何單個字元。要匹配包括 '\n' 在內的任何字元,請使用像 '[.\n]' 的模式 * :匹配0個或多個 使用 .* 的話就可以匹配任意長度的任意字元,但是有時候在使用 .*時就可能匹配不到物品們想要的結果,例: import re
java 正則表示式 非捕獲組(特殊構造
在 java api 文件中的正則表示式關於特殊構造(非捕獲組)的說明看不懂。例如:(?:X) X,作為非捕獲組 (?idmsux-idmsux) Nothing,但是將匹配標誌由 on 轉為 off (?idmsux-idmsux:X) X,作為帶有給定標誌 on - off 的非捕獲組 (?=X
JAVA正則表示式:Pattern類與Matcher類詳解(轉)
java.util.regex是一個用正則表示式所訂製的模式來對字串進行匹配工作的類庫包。它包括兩個類:Pattern和Matcher Pattern 一個Pattern是一個正則表示式經編譯後的表現模式。 Matcher 一個Matcher物件是一個狀態機器,它依據Pattern物件做為匹配模式對字串展開匹
java正則表示式中的分組
之前瞭解的regex中的()只是方便和?+ * |這類的符號的匹配以達到劃分範圍的目的。 比如說這個:"([+]|-)" 這個表示式匹配的是+或-,而不是[+後跟著]或- 如果是第二種意思得這麼寫"(\[+(])|-)" 這個例子很容易的就說明了[]中的意思和沒有括號是不同的,以及括號的意思
關於java正則表示式非捕獲型括號和捕獲型括號的研究
今天在做一個正則表示式的解析時,突然看見一個?:的例子,就看不懂了,然後在網上查了下,竟然是非捕獲型括號,意思就是匹配pattern,但不包含在match的group方法裡面。 (?: pattern)是非捕獲型括號 匹配pattern,
java正則表示式 非捕獲組詳解
這幾天看了下正則表示式,對非捕獲組(non-capturing)進行下總結。 主要總結 1個 + 2組 一共5個。 (?:X) (?=X) (?<=X) (?!X) (?<!X) 一、先從(?:)非捕獲組說起。 下面由一個例子引出非捕獲組。 有兩個金額:889
Java正則表示式之擷取字串
正則表示式很強大,熟悉正則表示式可以少些很多程式碼。常見的有,驗證使用者名稱/密碼是否合法,擷取字串等。這篇文章主要圍繞擷取字串做個簡單的介紹; 假設有個需求:在一長段亂七八糟的字串中擷取需要的資訊。 這裡有一個亂七八糟的字串:fjsdh(1234567
Java正則表示式:讓分組group()代替replaceAll吧!
今天,在論壇回覆貼子時,無意中進一步學到了分組的用法。 在之前幾個抓取網頁並分析獲得標題和超連結的時候,為了去除標題和超連結中多餘的字串,我都是使用 String方法中的replaceAll. 現在掌握了這個分組,完全可以在獲取所需內容時就遮蔽了多餘的字串。 下面用例子說話吧
正則表示式之分組捕獲、條件表示式、平衡組
其實我是想說平衡組,但我並是想寫一篇給零基礎的朋友們閱讀,我希望你是對正則有所瞭解,對平衡組不太瞭解的朋友閱讀。如果已經瞭解,看看也無妨。多一點思路。 分組捕獲 - () 就是用括號把要匹配的內容擴起來 命名分組捕獲 - (?<name>)或(?'
正則表示式之分組(捕獲)、後向引用
分組 正則表示式中的分組又稱為子表示式,就是把一個正則表示式的全部或部分當做一個整體進行 處理,分成一個或多個組。其中分組是使用“()”表示的。進行分組之後“()”裡面的內容就會被當 成一個整體來處理。 先看看一個
Python學習筆記模式匹配與正則表示式之使用和不使用正則表示式
隨筆記錄方便自己和同路人查閱。 #------------------------------------------------我是可恥的分割線------------------------------------------- 假設你希望在字串中查詢電話號碼。你知道模式:3個數字,一
Java正則表示式學習與記錄
轉載自:http://www.runoob.com/java/java-regular-expressions.html 正則表示式定義了字串的模式,用於搜尋、編輯或處理文字。 1、正則表示式中字元意義: \ 將下一字元標
java正則表示式分組( )分組
以下內容均為個人理解,方便後續複習用部落格整理起來,如果有誤,還望指正。。。。(以下均為java在eclipse中的正則表示式) ( )分組 在java正則表示式中,( )是分組的意思,依舊是所謂的捕獲組。每一個( )代表
linux 正則表示式 之 sed 與awk
sed 可以將資料進行替換,刪除,新增,選取等操作 sed [引數] [動作] 引數: -n :使用安靜模式 ,只有經過sed特殊處理的那一行才能被列出來 -i : 直接修改讀取檔案內容,而不是由螢幕輸出 -e
Java正則表示式的語法與示例
正向肯定預查,在任何匹配pattern的字串開始處匹配查詢字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。預查不消耗字元