簡單常用的正規表示式學習

2021-07-08 10:11:58 字數 2607 閱讀 7938

經常會有查詢符合某些複雜規則的字串的需要,這時我們就要使用正規表示式。

正規表示式分為元字元和普通字元

表1.常用的元字元

**說明.

匹配除換行符以外的任意字元

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

\s匹配任意的空白符

\d匹配數字

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

^匹配字串的開始

$匹配字串的結束

一般元字元後面接上表示次數的符號,表示元字元代表的出現的次數。例如*,+,,.。。。

至少5次最多12次

這裡的+是和

*類似的元字元,不同的是

*匹配任意次(可能是0次)

,而 +則匹配1

次或更多次

表2.常用的限定符

**/語法說明*

零次或更多次

+一次或更多次

?零次或一次

n次n次或更多次

n到m次

舉個例子

\w 匹配連續6個字母或數字或下劃線或漢字

\ba\w*\b

匹配以字母

a開頭的單詞——先是某個單詞開始處(

\b),然後是字母

a,然後是任意數量的字母或數字(

\w*),最後是單詞結束處(\b)

。 \w* 匹配至少0個的字母或數字或下劃線或漢字,所以一般沒有單獨這麼寫。可以a\w*  ,以a開頭的字串或a

\d+ 匹配至少1個數字

scala> val regex="""\d+""".r

regex: scala.util.matching.regex = \d+

scala> val s="a334 23ff 1dddd"

s: string = a334 23ff 1dddd

scala> val m=regex.findallin(s)

m: scala.util.matching.regex.matchiterator = non-empty iterator

scala> m.toarray

res5: array[string] = array(334, 23, 1)

^\d$因為使用了^

和$,所以輸入的整個字串都要用來和\d

來匹配,也就是說整個輸入必須是5到12個數字

,因此如果輸入的qq號能匹配這個正規表示式的話,那就符合要求了。

scala> val regex="""\ba\w\b""".r

regex: scala.util.matching.regex = \ba\w\b

scala> val s="ass alll ad"

s: string = ass alll ad

scala> val m=regex.findallin(s)

m: scala.util.matching.regex.matchiterator = non-empty iterator

scala> m.toarray

res2: array[string] = array(ass)

字元轉義

如果你想查詢元字元本身的話,比如你查詢.

,或者*

,就出現了問題:你沒辦法指定它們,因為它們會被解釋成別的意思。這時你就得使用\來取消這些字元的特殊意義。因此,你應該使用\.

和\*。當然,要查詢\

本身,你也得用\\

.例如:deerchao\.net

匹配deerchao.net

,c:\\windows

匹配c:\windows

。指定區間段

如果你想匹配沒有預定義元字元的字元集合(比如母音字母a,e,i,o,u),應該怎麼辦?

很簡單,你只需要在方括號裡列出它們就行了,像[aeiou]

就匹配任何乙個英文母音字母

,[.?!]

匹配標點符號(.或?或!)

。我們也可以輕鬆地指定乙個字元範圍,像[0-9]

代表的含意與\d

就是完全一致的:一位數字

;同理[a-z0-9a-z_]

也完全等同於\w(如果只考慮英文的話)。

分支條件

當你使用正規表示式表示滿足其中之一即可,用 | 連線兩個正則

a | b 匹配分枝條件時,將會從左到右地測試每個條件,所以注意順序

分組只要將你的正規表示式用()括起來就是一組(\d\.)  數字一到3個加上 . 這種情形共有3次,舉例 344.2.12就符合

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

表3.常用的反義**

**/語法

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

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

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

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

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

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

例子:\s+匹配不包含空白符的字串。

]+>匹配用尖括號括起來的以a開頭的字串。

參考:

正規表示式簡單語法及常用正規表示式

基本符號 表示匹配字串的開始位置 例外 用在中括號中 時,可以理解為取反,表示不匹配括號中字串 表示匹配字串的結束位置 表示匹配 零次到多次 表示匹配 一次到多次 至少有一次 表示匹配零次或一次 表示匹配單個字元 表示為或者,兩項中取一項 小括號表示匹配括號中全部字元 中括號表示匹配括號中乙個字元 ...

正規表示式簡單語法及常用正規表示式

表示匹配字串的開始位置 例外 用在中括號中 時,可以理解為取反,表示不匹配括號中字串 表示匹配字串的結束位置 匹配中文字元的正規表示式 u4e00 u9fa5 匹配雙位元組字元 包括漢字在內 x00 xff 匹配空行的正規表示式 n s r 匹配html標記的正規表示式 匹配首尾空格的正規表示式 s...

正規表示式簡單學習

1.myeclipse替換 null 為 null and 時,我們可以ctrl f find a za z null replace with 0 and 1 0代表整個引數,1代表第乙個組也就是第乙個括號裡面的內容也就是 2代表第二組,以此類推。2.常用符號 1 號代表前面的字元必須至少出現一次...