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

2021-08-19 16:27:14 字數 5224 閱讀 6852

1樓:之蘿蘿蔔

最基本的意思:小括號就是括號內看成一個整體 ,中括號就是匹配括號內的其中一個,大括號就是匹配幾次

但是括號裡變加上其他字元就有不同意思 詳細介紹 例如:

n是一個非負整數。匹配確定的n次。例如,“o”不能匹配“bob”中的“o”,但是能匹配“food”中的兩個o。

n是一個非負整數。至少匹配n次。例如,“o”不能匹配“bob”中的“o”,但能匹配“foooood”中的所有o。“o”等價於“o+”。“o”則等價於“o*”。

m和n均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,“o”將匹配“fooooood”中的前三個o。

“o”等價於“o?”。請注意在逗號和兩個數之間不能有空格。

?當該字元緊跟在任何一個其他限制符(*,+,?,,,)後面時,匹配模式是非貪婪的。非貪婪模式盡

可能少的匹配所搜尋的字串,而預設的貪婪模式則儘可能多的匹配所搜尋的字串。例如,對於字串“oooo”,“o+?”將匹配單個“o”,而“o+”

將匹配所有“o”。

.匹配除“\n”之外的任何單個字元。要匹配包括“\n”在內的任何字元,請使用像“[.\n]”的模式。

(pattern)

匹配pattern並獲取這一匹配。所獲取的匹配可以從產生的matches集合得到,在vbscript中使用submatches集合,在jscript中則使用$0…$9屬性。要匹配圓括號字元,請使用“\(”或“\)”。

(?:pattern)

匹配pattern但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行儲存供以後使用。這在使用或字元“(|)”來組合一個模式的各個部分是很有用。例如“industr(?:

y|ies)”就是一個比“industry|industries”更簡略的表示式。

(?=pattern)

正向預查,在任何匹配pattern的字串開始處匹配查詢字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後

使用。例如,“windows(?=95|98|nt|2000)”能匹配“windows2000”中的“windows”,但不能匹配

“windows3.1”中的“windows”。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜尋,而不是從

包含預查的字元之後開始。

(?!pattern)

負向預查,在任何不匹配pattern的字串開始處匹配查詢字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以

後使用。例如“windows(?!95|98|nt|2000)”能匹配“windows3.1”中的“windows”,但不能匹配

“windows2000”中的“windows”。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜尋,而不是

從包含預查的字元之後開始

x|y匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”則匹配“zood”或“food”。

[xyz]

字符集合。匹配所包含的任意一個字元。例如,“[abc]”可以匹配“plain”中的“a”。

[^xyz]

負值字符集合。匹配未包含的任意字元。例如,“[^abc]”可以匹配“plain”中的“p”。

[a-z]

字元範圍。匹配指定範圍內的任意字元。例如,“[a-z]”可以匹配“a”到“z”範圍內的任意小寫字母字元。

[^a-z]

負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,“[^a-z]”可以匹配任何不在“a”到“z”範圍內的任意字元。

2樓:_久違

'-'表示單獨一個'-'字元 沒有特殊含義

[-]表示一個包括'-'字元的集合 與'-'的意思相同

正規表示式裡面 .* 和 .*? 有什麼區別?

3樓:

表示式 .* 就是單個字元匹配任意次,即貪婪匹配。

表示式 .*? 是滿足條件的情況只匹配一次,即最小匹配.

\s    匹配任何空白非列印字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。注意 unicode 正規表示式會匹配全形空格符。

\s    匹配任何非空白非列印字元。等價於 [^ \f\n\r\t\v]。

*限定符是貪婪的,因為它們會儘可能多的匹配文字,只有在它們的後面加上一個?就可以實現非貪婪或最小匹配。

比如:使用/<.*>/匹配的結果為:h1>chapter 1 - 介紹正規表示式使用/<.*?>/匹配結果為:h1。

拓展知識

正規表示式特殊字元及其含義

4樓:匿名使用者

\s匹配任意的空白符(包括空格,製表符(tab),換行符,中文全形空格)

\s則是任意不是空白符的字元

?涉及到貪婪模式

當正規表示式中包含能接受重複的限定符時,通常的行為是(在使整個表示式能得到匹配的前提下)匹配儘可能多的字元。以這個表示式為例:a.

*b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。

有時,我們更需要懶惰匹配,也就是匹配儘可能少的字元。前面給出的限定符都可以被轉化為懶惰匹配模式,只要在它後面加上一個問號?。這樣.

*?就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。現在看看懶惰版的例子吧:

a.*?b匹配最短的,以a開始,以b結束的字串。如果把它應用於aabab的話,它會匹配aab(第一到第三個字元)和ab(第四到第五個字元)

5樓:匿名使用者

\w 等價於 [a-za-z0-9_]

\w 等價於 [^a-za-z0-9_],就是排除了\w的情況,也就是說它們表示的意思相反

6樓:匿名使用者

簡單的說就是,用一小段簡單的各種字元的組合,即叫做 正規表示式,去實現複雜的:

字串匹配,查詢你到你所需要的內容,以便後期提取出來你所要的內容。

這個聽起來很簡單,但是很多現實的應用中,所要處理的字串有千千萬萬種,各種複雜的字元,而且每個人的需求有無窮盡種,需要提取出的內容也是無窮多。而如果手動處理,寫普通的if else語句去一點點判斷字串是否相等,則是無法實現的。

而用正則,就可以實現如此多的,繁雜的,極度複雜的,各種需求。

更多的內容,可以看看我所總結的:

正規表示式學習心得

再舉幾個實際的例子:

notepad++正規表示式替換舉例1:一次性替換多個檔案的字尾

notepad++正規表示式替換舉例2:一次性替換多個路徑

notepad++正規表示式替換舉例3:一次性替換多個listitem為sect4

notepad++正規表示式替換舉例4:給每一行都新增addicon的字首

notepad++正規表示式替換舉例5:給book的標題和地址新增html**

正規表示式中的小括號和中括號,有什麼區別呢?

7樓:匿名使用者

最基本的意思:小括號就是

括號內看成一個整體 ,中括號就是匹配括號內的其中一個,大括號就是匹配幾次

但是括號裡變加上其他字元就有不同意思 詳細介紹 例如:

n是一個非負整數。匹配確定的n次。例如,“o”不能匹配“bob”中的“o”,但是能匹配“food”中的兩個o。

n是一個非負整數。至少匹配n次。例如,“o”不能匹配“bob”中的“o”,但能匹配“foooood”中的所有o。“o”等價於“o+”。“o”則等價於“o*”。

m和n均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,“o”將匹配“fooooood”中的前三個o。

“o”等價於“o?”。請注意在逗號和兩個數之間不能有空格。

?當該字元緊跟在任何一個其他限制符(*,+,?,,,)後面時,匹配模式是非貪婪的。非貪婪模式盡

可能少的匹配所搜尋的字串,而預設的貪婪模式則儘可能多的匹配所搜尋的字串。例如,對於字串“oooo”,“o+?”將匹配單個“o”,而“o+”

將匹配所有“o”。

.匹配除“\n”之外的任何單個字元。要匹配包括“\n”在內的任何字元,請使用像“[.\n]”的模式。

(pattern)

匹配pattern並獲取這一匹配。所獲取的匹配可以從產生的matches集合得到,在vbscript中使用submatches集合,在jscript中則使用$0…$9屬性。要匹配圓括號字元,請使用“\(”或“\)”。

(?:pattern)

匹配pattern但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行儲存供以後使用。這在使用或字元“(|)”來組合一個模式的各個部分是很有用。例如“industr(?:

y|ies)”就是一個比“industry|industries”更簡略的表示式。

(?=pattern)

正向預查,在任何匹配pattern的字串開始處匹配查詢字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後

使用。例如,“windows(?=95|98|nt|2000)”能匹配“windows2000”中的“windows”,但不能匹配

“windows3.1”中的“windows”。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜尋,而不是從

包含預查的字元之後開始。

(?!pattern)

負向預查,在任何不匹配pattern的字串開始處匹配查詢字串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以

後使用。例如“windows(?!95|98|nt|2000)”能匹配“windows3.1”中的“windows”,但不能匹配

“windows2000”中的“windows”。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜尋,而不是

從包含預查的字元之後開始

x|y匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”則匹配“zood”或“food”。

[xyz]

字符集合。匹配所包含的任意一個字元。例如,“[abc]”可以匹配“plain”中的“a”。

[^xyz]

負值字符集合。匹配未包含的任意字元。例如,“[^abc]”可以匹配“plain”中的“p”。

[a-z]

字元範圍。匹配指定範圍內的任意字元。例如,“[a-z]”可以匹配“a”到“z”範圍內的任意小寫字母字元。

[^a-z]

負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,“[^a-z]”可以匹配任何不在“a”到“z”範圍內的任意字元。

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

是貪婪模式 是勉強模式 是侵佔模式 以下是我對這幾個模式的理解 假定要分析的字串是xfoo foo 模式.foo 貪婪模式 模式分為子模式p1 和子模式p2 foo 兩個部分.其中p1中的量詞匹配方式使用預設方式 貪婪型 匹配開始時,吃入所有字元xfoo 去匹配子模式p1。匹配成功,但這樣以來就沒有...

求正規表示式分割aa ee得到,求正規表示式 分割 aa bb cc dd ee 得到 aa , bb , cc , dd , ee

str.match w g str.match w u4e00 u9fa5 g 支援中文 aa bb 標準的表示 包含aa,且包含bb 的模式,對aa和bb的出現順序無要求,但這是偵測,不能 獲,要想捕獲內容,就需要把邊界定義清楚。在你沒有說清楚的時候,暫以 包含aa和bb的一行文字 為捕獲內容來理...

關於正規表示式問號的幾種匹配,正規表示式匹配問號 不是問號的用法

pattern 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行儲存供以後使用。這在使用 或 字元 來組合一個模式的各個部分是很有用。例如,industr y ies 就是一個比 industry industries 更簡略的表示式。pattern 負向預查,在任何不匹配...