正規表示式初級使用

2021-07-02 23:24:14 字數 2377 閱讀 6480

一般從 需要匹配的字元、匹配字元的位置、匹配數量 3個方面就能從源串中找到自己想要的字串。

如何匹配字元:

1) 普通字元,直接寫。eg :hi, 8。

2) 某種字元:

\d : 匹配數字。

\w : 匹配字母或數字或下劃線或漢字。

\s :匹配任意的空白。

. : 匹配任意字元。

3)特殊字元(比如母音字母a,e,i,o,u):

: 表示括號中的某個字元。 也可以表示某個字元的範圍。

eg1 : [aeiou]就匹配任何乙個英文母音字母.

eg2 : [0-5]代表這個字元是0-5之間的某個數,[0-9]代表的含意與\d就是完全一致的。

4)轉義字元 :

如果查詢.,或者。可以這樣寫 \. \

eg : deerchao.net匹配deerchao.net

匹配位置 :

1)在單詞中的位置:

\b : 匹配單詞的開始或結束.

eg : \bhi\b 只會找到單詞hi,而不會找到類似於him,history,high等等

2)在整個字串中的位置:

^ : 匹配字串的開始

$ : 匹配字串的結束

匹配數量 :

* 重複零次或更多次(任意次)

+重複一次或更多次(至少一次)

? 重複零次或一次(至多一次)

重複n次. eg : //d//d//d –> //d

重複n次或更多次

重複n到m次

| 分枝條件 指的是有幾種規則,如果滿足其中任意一種規則都應該當成匹配,具體方法是用|把不同的規則分隔開。

eg1 : 0\d-\d|0\d-\d這個表示式能匹配兩種以連字型大小分隔的**號碼:一種是三位區號,8位本地號(如010-12345678),一種是4位區號,7位本地號(0376-2233445)。

eg2 : (?0\d)?[- ]?\d|0\d[- ]?\d這個表示式匹配3位區號的**號碼,其中區號可以用小括號括起來,也可以不用,區號與本地號間可以用連字型大小或空格間隔,也可以沒有間隔。

注意 :

( ) 分組:用來指定子表示式,然後你就可以對這個子表示式進行操作.

eg : (\d.)\d是乙個簡單的ip位址匹配表示式。\d匹配1到3位的數字,(\d.)匹配三位數字加上乙個英文句號(這個整體也就是這個分組)重複3次,最後再加上乙個一到三位的數字(\d)。

反義 : 有時需要查詢不屬於某個能簡單定義的字元類的字元。比如想查詢除了數字以外,其它任意字元都行的情況

\w 匹配任意不是字母,數字,下劃線,漢字的字元

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

\d 匹配任意非數字的字元

\b 匹配不是單詞開頭或結束的位置

[^x] 匹配除了x以外的任意字元

[^aeiou] 匹配除了aeiou這幾個字母以外的任意字元

貪婪與懶惰

1) 貪婪匹配 : 正規表示式中包含能接受重複的限定符時,通常的行為是(在使整個表示式能得到匹配的前提下)匹配盡可能多的字元。

eg : a.*b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。

2) 懶惰匹配 : 匹配盡可能少的字元。只要在重複符(* ? + 等)後加上?,就可以進入懶惰模式.

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

*? 重複任意次,但盡可能少重複

+? 重複1次或更多次,但盡可能少重複

?? 重複0次或1次,但盡可能少重複

? 重複n到m次,但盡可能少重複

? 重複n次以上,但盡可能少重複

正則在ios中的使用 :

1.判斷字串是否匹配某個規則

2. 擷取字串中符合某個規則的內容

看**

// 1. 建立正規表示式

// pattern : 規則

nsstring *pattern = @"[a-za-z]*hi[a-za-z]+";

nsregularexpression *regex = [[nsregularexpression alloc] initwithpattern:pattern options:0 error:nil];

// 2. 測試字串 : 返回的是匹配的 所有 結果

nsarray *results = [regex matchesinstring:username options:0 range:nsmakerange(0, username.length)];

for (nstextcheckingresult *result in results)

Python 正規表示式 初級高階

1.match和search的區別 match 函式只檢測字串開頭位置是否匹配,匹配成功才會返回結果,否則返回none search 函式會在整個字串內查詢模式匹配,只到找到第乙個匹配然後返回乙個包含匹配資訊的物件,該物件可以通過呼叫group 方法得到匹配的字串,如果字串沒有匹配,則返回none。...

使用正規表示式

如果原來沒有使用過正規表示式,那麼可能對這個術語和概念會不太熟悉。不過,它們並不是您想象的那麼新奇。請回想一下在硬碟上是如何查詢檔案的。您肯定會使用 和 字元來幫助查詢您正尋找的檔案。字元匹配檔名中的單個字元,而 則匹配乙個或多個字元。乙個如 data?dat 的模式可以找到下述檔案 data1.d...

使用正規表示式

本文節選自 並有稍微修正。使用正規表示式 您可以使用正規表示式做很多事情。在以下的列表中,您可以找到一些最普通 最常用的正規表示式的例子。表示文字串必須在一行的開頭。所以,當查詢行的開頭只為 hosts 的行,可以使用命令 grep ls hosts 代表了一行的結尾。所以,當查詢行的結尾只為 ho...