元字元描述
.匹配除換行符以外的任意字元。
[ ]字元類,匹配方括號中包含的任意字元。
[^ ]
否定字元類。匹配方括號中不包含的任意字元
*匹配前面的子表示式零次或多次
+匹配前面的子表示式一次或多次
?匹配前面的子表示式零次或一次,或指明乙個非貪婪限定符。
花括號,匹配前面字元至少 n 次,但是不超過 m 次。
(xyz)
字元組,按照確切的順序匹配字元xyz。
|分支結構,匹配符號之前的字元或後面的字元。
\轉義符,它可以還原元字元原來的含義,允許你匹配保留字元[ ] ( ) . * + ? ^ $ |
^匹配行的開始
$匹配行的結束
簡寫描述
.匹配除換行符以外的任意字元
\w匹配所有字母和數字的字元:[a-za-z0-9_]
\w匹配非字母和數字的字元:[^\w]
\d匹配數字:[0-9]
\d匹配非數字:[^\d]
\s匹配空格符:[\t\n\f\r\p]
\s匹配非空格符:[^\s]
後行斷言和先行斷言有時候被稱為斷言,它們是特殊型別的非捕獲組(用於匹配模式,但不包括在匹配列表中)。當我們在一種特定模式之前或者之後有這種模式時,會優先使用斷言。
例如我們想獲取輸入字串$4.44 and $10.88
中$
字元之前的所有數字。我們可以使用這個正規表示式(?<=\$)[0-9\.]*
,表示: 獲取$
字元之前的所有的數字包含.
字元。
以下是正規表示式中使用的斷言:
符號描述
?=正向先行斷言
?!負向先行斷言
?<=
正向後行斷言
?負向後行斷言
正向先行斷言認為第一部分的表示式必須是先行斷言表示式。返回的匹配結果僅包含與第一部分表示式匹配的文字。
要在乙個括號內定義乙個正向先行斷言,在括號中問號和等號是這樣使用的(?=...)
。先行斷言表示式寫在括號中的等號後面。
例如正規表示式(t|t)he(?=\sfat)
,表示: 匹配大寫字母t
或小寫字母t
,後面跟字母h
,後跟字母e
。
在括號中,我們定義了正向先行斷言,它會引導正規表示式引擎匹配the
或the
後面跟著fat
。
"(t|t)he(?=\sfat)" =>thefat cat sat on the mat.當我們需要從輸入字串中獲取不匹配表示式的內容時,使用負向先行斷言。負向先行斷言的定義跟我們定義的正向先行斷言一樣,
唯一的區別是不是等號=
,我們使用否定符號!
,例如(?!...)
。
我們來看看下面的正規表示式(t|t)he(?!\sfat)
,表示: 從輸入字串中獲取全部the
或者the
且不匹配fat
前面加上乙個空格字元。
"(t|t)he(?!\sfat)" => the fat cat sat onthemat.正向後行斷言是用於獲取在特定模式之前的所有匹配內容。正向後行斷言表示為
(?<=...)
。例如正規表示式(?<=(t|t)he\s)(fat|mat)
,表示: 從輸入字串中獲取在單詞the
或the
之後的所有fat
和mat
單詞。
"(?<=(t|t)he\s)(fat|mat)" => thefatcat sat on themat.負向後行斷言是用於獲取不在特定模式之前的所有匹配的內容。負向後行斷言表示為(? the cat sat oncat.標記描述i
不區分大小寫: 將匹配設定為不區分大小寫。
g全域性搜尋: 搜尋整個輸入字串中的所有匹配。
m多行匹配: 會匹配輸入字串每一行。
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...