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

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

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”範圍內的任意字元。

lua正規表示式,LUA 正規表示式

lua中修飾符 和 都表示匹配前一字元0次或多次,但 進行的是最短匹配,類似傳統正則中的非貪婪匹配,而 則是最長匹配,即貪婪匹配 由於你正則中最後一個 d 後面沒有任何東西了,那這個 進行了最短匹配,即什麼都不匹配,所以沒有捕獲到1999,而加上 後,由於有了結尾標識位,就必須匹配1999才能使整個...

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

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

正規表示式ddsw0,正規表示式 d d s w 0 9 d d s w 這兩個的區別是什麼呢?

亂紅齋 一個匹配有符號數,另一個匹配有符號數或無符號數。正規表示式,又稱規則表示式,是電腦科學的一個概念,這個概念最初是由unix中的工具軟體普及開的。正則表通常被用來檢索 替換那些符合某個模式 規則 的文字。正則引擎主要分為dfa nfa兩大類。許多程式設計語言都支援利用正規表示式進行字串操作。在...