1. 程式人生 > >正則表示式基礎語法例子

正則表示式基礎語法例子

literal

功能:匹配文字字串的字面值 literal
例子:foo

re1 | re2

功能:匹配正則表示式 re1 或者 re2
例子:foo|bar

.

功能:匹配任何字元(除了\n 之外)
例子:

表示式:f.o
匹配:在字母“f”和“o”之間的任意一個字元;例如 fao、f9o、f#o 等

表示式:..
匹配:任意兩個字元

^

功能:匹配字串起始部分
例子:

表示式:^From
匹配:任何以 From 作為起始的字串

$

功能:匹配字串終止部分
例子:

表示式:/bin/*sh$
匹配:任何以/bin/tcsh 作為結尾的字串

*

功能:匹配 0 次或者多次前面出現的正則表示式
例子:

表示式:5*
匹配:5 或 555 或 沒有5

+

功能:匹配 1 次或者多次前面出現的正則表示式
例子:

表示式:[a-z]+\.com
匹配:a.com 或 abc.com
不匹配:.com

?

功能:匹配 0 次或者 1 次前面出現的正則表示式
例子:

表示式:goo?
匹配:goo 或 gooo
不匹配:goooo

{N}

功能:匹配 N 次前面出現的正則表示式
例子:

表示式:[0-9]{3}
匹配:123 或 999
不匹配:1234 或 12

{M,N}

功能:匹配 M~N 次前面出現的正則表示式

表示式:[0-9]{1,3}
匹配:1 或 12 或 123
不匹配:1234

[…]

功能:匹配來自字符集的任意單一字元
例子:

表示式:[aeiou]
匹配:aeiou
不匹配:fs

[..x−y..]

功能:匹配 x~y 範圍中的任意單一字元
例子:

表示式:[0-9]
匹配:15809之間的單個數字)
不匹配:a

表示式:[A-Za-z]
匹配:A, F, h
不匹配:5

[^…]

功能:不匹配此字符集中出現的任何一個字元,包括某一範圍的字元(如果在此字符集中出現)
例子:

表示式:[^aeiou]
good 匹配:agoodegood 不匹配:sagood

(*|+|?|{})?

功能:用於匹配上面頻繁出現/重複出現符號的非貪婪版本(*、+、?、{})
解釋:
貪婪模式:就是在整個表示式匹配成功的前提下,儘可能多的匹配,也就是所謂的“貪婪”,通俗點講,就是看到想要的,有多少就撿多少,除非再也沒有想要的了。
非貪婪模式:就是在整個表示式匹配成功的前提下,儘可能少的匹配,也就是所謂的“非貪婪”,通俗點講,就是找到一個想要的撿起來就行了,至於還有沒有沒撿的就不管了。

例子:

字串:'Thu Feb 15 17:46:04 2007::[email protected]::1171590364-6-8'

表示式:.+(\d+-\d+-\d+)
結果:
Match 1
Full match  0-61    `Thu Feb 15 17:46:04 2007::[email protected]::1171590364-6-8`
Group 1.    56-61   `4-6-8`
(Group1 匹配到的是`4-6-8`)

表示式:.+?(\d+-\d+-\d+)   # 注意,在加號後面,加了"?"
結果:
Match 1
Full match  0-61    `Thu Feb 15 17:46:04 2007::[email protected]::1171590364-6-8`
Group 1.    47-61   `1171590364-6-8`
(Group1 匹配到的是`1171590364-6-8`)



字串:aa<div>test1</div>bb<div>test2</div>cc

表示式:<div>.*</div>
結果:<div>test1</div>bb<div>test2</div>

表示式:<div>.*?</div>
結果:<div>test1</div>(這裡指的是一次匹配結果,所以沒包括<div>test2</div>)

(…)

功能:匹配封閉的正則表示式,然後另存為子組
例子:([0-9]{3})?,f(oo|u)bar

\d

功能:匹配任何十進位制數字,與[0-9]一致(\D 與\d 相反,不匹配任何非數值型的數字)
例子:data\d+.txt

\w

功能:匹配任何字母數字字元,與[A-Za-z0-9_]相同(\W 與之相反)
例子:[A-Za-z_]\w+

\s

功能:匹配任何空格字元,與[\n\t\r\v\f]相同(\S 與之相反)
例子:of\sthe

\b

功能:匹配任何單詞邊界(\B 與之相反)
例子:

表示式:\bThe\b
意思:僅僅匹配單詞 the。
匹配:"a the b"
不區別:"fathe"

表示式:\Bthe
意思:任何包含但並不以 the 作為起始的字串。
匹配:"fathe"
不區別:"a the b"

\N

功能:匹配已儲存的子組 N(參見上面的(…))
例子:price: \16

\c

功能:轉義表示式用字元
例子:

表示式:data\.txt
匹配:data.txt

\A(\Z)

功能:匹配字串的起始(結束)(另見上面介紹的^和$)
例子:\ADear

(?#comment)

功能:此處並不做匹配,只是作為註釋
(沒看到哪裡用過)

(?=)

解釋

如果表示式為“(?=.com)”,意思是:一個字串後面跟著“.com”才做匹配操作,並不使用任何目標字串

(?!)

解釋

如果表示式為“(?!.net)”,意思是:一個字串後面不是跟著“.net”才做匹配操作

(?<=)

解釋

如果表示式為“(?<=800-)”,意思是:字串之前為“800-”才做匹配,假定為電話號碼,同樣,並不使用任何輸入字串

(?<!)

解釋

如果表示式為“(?<!192.168.)”,意思是:一個字串之前不是“192.168.”才做匹配操作,假定用於過濾掉一組 C 類 IP 地址

(?:)

功能

表示一個匹配不用儲存的分組。

解釋

當表示式中有圓括號“()”出現時,表示把匹配“()”內規則的字串,儲存成一個分組。儲存成分組後,就可以使用 result.group(1) 來訪問這個分組。當有多個分組時,就可以使用 result.group(N) 來訪問第N個分組。
在分組內加“?:”的話(例如:(?:a) ),就表示匹配到“a”後,不把“a”儲存到分組中。也就是說 result.group(1) 就取不到這個“a”了。

例子

表示式:(?:https?|ftp)://([^/\r\n]+)(/[^\r\n]*)?

結果1:
Match "https://stackoverflow.com/"
     Group 1: "stackoverflow.com"
     Group 2: "/"

結果2:
Match "https://stackoverflow.com/questions/tagged/regex"
     Group 1: "stackoverflow.com"
     Group 2: "/questions/tagged/regex"

(?(id/name)Y|N )

功能:

如果分組所提供的 id 或者 name(名稱)存在,就返回正則表示式的條件匹配 Y,如 果不存在,就返回 N;|N 是可選項。

解釋

當有一個分組被儲存後,就可以通過 result.group(1) 取得這個分組的值。在表示式中,可以“(1)”的方式,取出被儲存的分組。“?(1)”表示,如果能取到“分組1”,就使用“Y”規則,否則就使用“X”規則。(當然,也可以使用“?(name)”的方式)

例子

表示式:(?:x)y

結果1Match "xy"
Full match  0-2 `xy`
(沒有group(1),也就是說“x”沒有被儲存到分組內)

.* 或 .+

功能:”.*” 是匹配所有字元,可以一個字元沒有;”.+” 是區別所有字元,必須有一個字元。
例子:

表示式:.*a
匹配:a1a
不匹配:b

表示式:.+a
匹配:1a 或 aaaaa
不匹配:a

複雜例子:

例子1

表示式:(?:(x)|y)(?(1)y|x)
結果:xy 或 yx 匹配。 xx 或 yy 不匹配。

解釋:

(?:(x)|y):匹配“x”或“y”。“?:”代表不把匹配的內容保留到分組裡,但因為“x”的兩邊有括號,所以“x”匹配上後,仍然被儲存到了分組裡;而“y”沒有括號,所以按照“?:”規則,沒有儲存到分組裡。

例子:
表示式:(?:(x)|y)

字串:x
結果:
Full match  0-1 `x`
Group 1.    0-1 `x`

字串:y
結果:
Full match  0-1 `y`

從上面的例子可以看出,當是“x”的時候,因為“(x)”的原因,“x”被儲存到了“分組1”中,沒有受“?:”影響。但當是“y”時候,就沒有被儲存到分組中,所以結果中也沒有“Group 1”.

(?(1)y|x):“?(1)”表示,如果有“1”這個分組的話(如果第一個字元是“x”的話,就匹配上前面的“(x)”,就會有“1”這個分組),第二個要匹配字元必須是“y”;沒有“1”這個分組的話,第二個匹配的字元必須是“x”。

相關推薦

表示式基礎語法例子

literal 功能:匹配文字字串的字面值 literal 例子:foo re1 | re2 功能:匹配正則表示式 re1 或者 re2 例子:foo|bar . 功能:匹配任何字元(除了\n 之外) 例子: 表示式:f.o 匹配:在字

表示式基礎語法

這篇文章主要記錄了正則表示式的一些基本語法、修正模式和php常用的正則表示式函式! 一、正則表示式基本語法: 界定符 原子 元字元 量詞 邊界控制 模式單元 1. 界定符 表示一個正則表示式的開始和結束。(如:/[0-9]/或#[0-9

表示式基礎1

註釋:正則表示式的學習記錄1 1.正則表示式 1.1定義 正則表示式是具有特殊含義的字串,用來定義匹配規則,在Pattern類中有簡單的規則定義。可以結合字串類的方法使用。 1.2功能 正則表示式可用於限制賬號密碼的長度,用於匹配符合規則的字串,用來檢索、替換那些符合某

表示式基礎

註釋:正則表示式的學習記錄3 Date類概述 Date類用於描述特定的瞬間,是對時間的操作,可以精確到毫秒。 新建以個Date類將毫秒轉成日期物件:  //建立日期物件,把當前的毫秒值轉換為日期  Date date = new Date(160761600000L);

表示式基礎2

註釋:正則表示式的學習記錄2 常見表示式 ​ boolean: matches(String regex),稱為匹配字串,其中regex是正則的規則,表示式返回boolean型別值告知此字串是否匹配給定的正則表示式。用法例如,"abc".matches("[a]") 匹配成功返回true

表示式 - 基礎

正則簡介  - 1.使用特殊的符號來做校驗,目標是操作字串。例如:手機號碼、郵箱、身份證的校驗等。 使用正則表示式的優缺點  - 1.使用特殊的符號來做校驗,目標是操作字串。例如:手機號碼、郵箱、身份證的校驗等。  - 2.缺點:雖然能簡化書寫,但是正則

表示式基礎及應用

正則表示式,按照我自己的理解,其實就是字串的操作校驗,所以先介紹關於字串操作的知識: 第一個是search 查詢搜尋: var str='abcdef' alert(str.search('b')) //找到對應的位置 下標從0開始 沒有找到對應的 返回是-1 第二個是subs

JavaScript表示式語法--詼諧易懂

正則表示式可以用來做表單校驗,也可以用來搜尋關鍵字,匹配字元等等,功能非常強大,但是剛開始看到正則的語法就頭大,什麼程式碼,明明亂碼好嘛?! 但是這麼好用的東西怎麼能不學習,偶然看到師父轉發的文章,簡直讓我這初學者醍醐灌頂,作者講的很通俗易懂。 在文章開始前,要了解es6字串操作方法

表示式語法

import re m=re.findall(".","aa\nbbcc") print(m)     此處輸出['a', 'a', 'a', 'b', 'b', 'c', 'c']      "."表示輸出所有非換行符的字元 轉義字

PHP表示式基礎之認識表示式

正則表示式是我們平常在程式開發過程中經常用到的一種工具,有關於它的起源以及除程式之外的應用場景咱就不贅述了,咱們只看它在程式中是如何來應用的。 這個正則表示式在我們程式中通常是把它當做一種模式去匹配一類字串,通俗地講,就是用一個字串描述一個特徵,完事驗證另外一個字串是否符合這個特徵的公式。你

php表示式基礎及使用

概述 正則表示式是一種描述字串結果的語法規則,是一個特定的格式化模式,可以匹配、替換、擷取匹配的字串。常用的語言基本上都有正則表示式,如JavaScript、java等。其實,只有瞭解一種語言的正則使用,其他語言的正則使用起來,就相對簡單些。文字主要圍繞解決下面問題展開。 有哪

[基礎 18_001] 表示式基礎

文字字元 字元 匹配內容 字母字元 本身 \0 NULL 字元(\u0000) \t Tab 製表符(\u0009

表示式基礎運用

驗證表單 背景 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>正則表單驗證</title> <st

表示式基礎.md

正則表示式基礎 模式 描述 \w 匹配字母數字及下劃線 \W 匹配非字母數字下劃線 \s 匹配任意空白字元,等價於 [\t\n\r\f]. \S 匹配任意非空字元 \d 匹配任意數字,等價於 [0-9] \D 匹配任意非數字

表示式-基礎知識Review

正則表示式(Regular Expression)是電腦科學的一個概念。 正則表示式使用單個字元竄來描述、匹配一系列符合某個句法規則的字元竄。 在很多文字編輯器裡, 正則表示式通常用來被檢索替換哪些符合某個模式的文字。 建立 JavaScript通過內建物件

Perl表示式(1) - 表示式基礎知識

Perl正則表示式 1. 基礎知識 Perl中正則表示式(regular expression)預設匹配 $_ 中的字串,匹配成功就返回真,否則返回假; Perl匹配正則表示式時,可以使用變數內插,先完成變數內插,取出變數中的字串後,編譯正則表示式。 1.

表示式語法和簡單應用

在Java中,藉助於String類的一系列方法,我們已經可以對字串做簡單的處理:比如求子串、查詢字元、格式化字串、字串替換等等。正則表示式則提供了更為強大的對字串的處理操作,是一種強大而靈活的文字處理工具。 正則表示式對文字的匹配流程如下圖所示: 簡單的說,正則表示式就是以特定的語法規則描述一個字串:如果

表示式基礎應用(替換replaceAll(regex,str))

1. 基礎字元替換 要求: 將字串中的數字串替換成* String e = "asdlfj328238asldfjlsfd32323sdfl";String reg5 ="\\d+";String newStr = e.replaceAll(reg5, "*");Syst

Linux中grep命令,用或的關係查詢多個字串,表示式基礎說明

使用 grep 'word1|word2' 檔名  這樣的命令是不對的! 應該使用如下的命令:1,grep -E 'word1|word2' 檔名 2,egrep 'word1|word2' 檔名 3

表示式使用及例子

字元類[abc] a、b 或 c(簡單類)[^abc] 任何字元,除了 a、b 或 c(否定) [a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內(範圍) [a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](並集) [a-z&&[