正規表示式就是這2種寫法,有什麼卻別?分別

時間 2021-08-30 09:32:14

1樓:

.* 代表的是萬用字元

外邊有括號的和不寫括號區別在於括號的用法

在正規表示式中 ()表示模式單元

當()的正則式匹配時 可以通過呼叫模式單元的方法呼叫匹配的內容用//1 這種格式 呼叫

2樓:匿名使用者

前者捕獲括號裡的內容 後者不捕獲。如果能達到同樣的效果建議後者,效率稍高。

正則裡儘量少寫. 比如用[^>]之類的代替點號如果知道字串長度範圍 比如 捕獲微博內容 部分就用 [^>]總之,儘可能減少回溯次數。

3樓:匿名使用者

(.*) 可以在後面引用或取值 group(1) 取值或\1引用

4樓:匿名使用者

把正規表示式的一部分放在圓括號內,你可以將它們形成「組」,表示式的處理引擎會把括號內的處理結果記下來,並給他編號(分別為\1,\2...)。然後你可以對這個結果(即「組」)使用一些正則操作,例如重複操作符。

事實上,當用「()」定義了一個正規表示式組後,正則引擎則會把被匹配的組按照順序編號,存入快取。當對被匹配的組進行向後引用的時候,可以用「\數字」的方式進行引用。<<\1>>引用第一個匹配的後向引用組,<<\2>>引用第二個組,以此類推,<<\n>>引用第n個組。

而<<\0>>則引用整個被匹配的正規表示式本身。

可能有點抽象,我們看一個例子。

假設你想匹配一個html標籤的開始標籤和結束標籤,以及標籤中間的文字。比如this is a test,我們要匹配以及中間的文字。我們可以用如下正規表示式:

「<([a-z][a-z0-9]*)[^>]*>.*?」

首先,「<」將會匹配「」的第一個字元「<」。然後[a-z]匹配b,[a-z0-9]*將會匹配0到多次字母數字,後面緊接著0到多個非「>」的字元。最後正規表示式的「>」將會匹配「」的「>」。

接下來正則引擎將對結束標籤之前的字元進行惰性匹配,直到遇到一個「>將匹配「axaxa」、「bxbxb」以及「cxcxc」。如果用數字形式引用的組沒有有效的匹配,則引用到的內容簡單的為空。

一個後向引用不能用於它自身。<<([abc]\1)>>是錯誤的。因此你不能將<<\0>>用於一個正規表示式匹配本身,它只能用於替換操作中。

後向引用不能用於字符集內部。<<(a)[\1b]>>中的<<\1>>並不表示後向引用。在字符集內部,<<\1>>可以被解釋為八進位制形式的轉碼。

向後引用會降低引擎的速度,因為它需要儲存匹配的組。如果你不需要向後引用,你可以告訴引擎對某個組不儲存。例如:

<>。其中「(」後面緊跟的「?:」會告訴引擎對於組(value),不儲存匹配的值以供後向引用。

正規表示式中和有什麼區別,正規表示式裡面 和 有什麼區別?

之蘿蘿蔔 最基本的意思 小括號就是括號內看成一個整體 中括號就是匹配括號內的其中一個,大括號就是匹配幾次 但是括號裡變加上其他字元就有不同意思 詳細介紹 例如 n是一個非負整數。匹配確定的n次。例如,o 不能匹配 bob 中的 o 但是能匹配 food 中的兩個o。n是一個非負整數。至少匹配n次。例...

正規表示式中s s什麼意思不是,正規表示式中, s S 什麼意思。。。。“ ”不是範圍描述符嗎?

s s 是完全通配的意思 是範圍描述符。s是指空白,包括空格 換行 tab縮排等所有的空白,而 s剛好相反,這樣一正一反下來,就表示所有的字元,完全的,一字不漏的。另外,這個符號,表示在它裡面包含的單個字元不限順序的出現,比如 ace 這表示,只要出現a c e這三個任意的字母,都會被匹配 s 表示...

正規表示式d g什麼意思,正規表示式 d d 的意思

g 最前面的 與最後面的 是分隔符,表示正規表示式的開始與結束。最後的 g 標誌表示正規表示式使用的global 全域性 的狀態。使用 global 標誌表明在被查詢的字串中搜尋操作將查詢所有符合的項,而不僅僅是第一個。這也被稱為全域性匹配。相關的標誌還有i ignorecase,表示忽略大小寫 m...