正則學習規範

2021-10-25 15:16:18 字數 3057 閱讀 5852

正規表示式基礎知識

乙個正規表示式就是由普通字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在查詢文字主體時待匹配的乙個或多個字串。正規表示式作為乙個模板,將某個字元模式與所搜尋的字串進行匹配。如:

jscript vbscript 匹配

/^[ \t] * $ / 「^[ \t] * $」 匹配乙個空白行。

/\d-\d/ 「\d-\d」 驗證乙個id 號碼是否由乙個2位數字,乙個連字元以及乙個5位數字組成。

/<(. )>. * / 「<(. * )>.*< /\1>」 匹配乙個 html 標記。

下表是元字元及其在正規表示式上下文中的行為的乙個完整列表:

字元 描述

\ 將下乙個字元標記為乙個特殊字元、或乙個原義字元、或乙個 向後引用、或乙個八進位制轉義符。例如,『n』 匹配字元 「n」。』\n』 匹配乙個換行符。序列 『\』 匹配 「」 而 「(」 則匹配 「(」。

^ 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,^ 也匹配 『\n』 或 『\r』 之後的位置。

$ 匹配輸入字串的結束位置。如果設定了regexp 物件的 multiline 屬性,$ 也匹配 『\n』 或 『\r』 之前的位置。

下面看幾個例子:

「^the」:表示所有以"the"開始的字串(「there」,"the cat"等);

「of despair $」:表示所以以"of despair"結尾的字串;

「^abc $」:表示開始和結尾都是"abc"的字串——呵呵,只有"abc"自己了;

「notice」:表示任何包含"notice"的字串。

『』,』+『和』?'這三個符號,表示乙個或一串行字元重複出現的次數。它們分別表示「沒有或

更多」,「一次或更多」還有「沒有或一次」。下面是幾個例子:

"ab":表示乙個字串有乙個a後面跟著零個或若干個b。(「a」, 「ab」, 「abbb」,……);

「ab+」:表示乙個字串有乙個a後面跟著至少乙個b或者更多;

「ab?」:表示乙個字串有乙個a後面跟著零個或者乙個b;

「a?b+$」:表示在字串的末尾有零個或乙個a跟著乙個或幾個b。

也可以使用範圍,用大括號括起,用以表示重複次數的範圍。

「ab」:表示乙個字串有乙個a跟著2個b(「abb」);

「ab」:表示乙個字串有乙個a跟著至少2個b;

「ab」:表示乙個字串有乙個a跟著3到5個b。

請注意,你必須指定範圍的下限(如:"「而不是」")。還有,你可能注意到了,』*』,』+『和

『?『相當於"","「和」"。

還有乙個』¦』,表示「或」操作:

「hi¦hello」:表示乙個字串裡有"hi"或者"hello";

「(b¦cd)ef」:表示"bef"或"cdef";

"(a¦b)c":表示一串"a"「b"混合的字串後面跟乙個"c」;

『.『可以替代任何字元:

「a.[0-9]」:表示乙個字串有乙個"a"後面跟著乙個任意字元和乙個數字;

"^. ":表

示有任意

三個字元

的字串

(長度為

3個字元

);方括

號表示某

些字元允

許在乙個

字串中

的某一特

定位置出

現:"[

ab]"

:表示一

個字串

有乙個"

a"或"

b"(相

當於"a

¦b")

;"[a

−d]"

:表示一

個字串

包含小寫

的′a′

到′d′

中的乙個

(相當於

"a¦b

¦c¦d

"或者"

[abc

d]")

;"[a

−za−

z]":

表示乙個

以字母開

頭的字元

串;"[

0−9]

",[a

−za−

z0−9

]":表示有任意三個字元的字串(長度為3個字元); 方括號表示某些字元允許在乙個字串中的某一特定位置出現: "[ab]":表示乙個字串有乙個"a"或"b"(相當於"a¦b"); "[a-d]":表示乙個字串包含小寫的'a'到'd'中的乙個(相當於"a¦b¦c¦d"或者"[abcd]"); "^ [a-za-z]":表示乙個以字母開頭的字串; "[0-9]%":表示乙個百分號前有一位的數字; ",[a-za-z0-9]

":表示有任

意三個字

符的字元

串(長度

為3個字

符);方

括號表示

某些字元

允許在一

個字串

中的某一

特定位置

出現:"

[ab]

":表示

乙個字元

串有乙個

"a"或

"b"(

相當於"

a¦b"

);"[

a−d]

":表示

乙個字元

串包含小

寫的′a

′到′d

′中的一

個(相當

於"a¦

b¦c¦

d"或者

"[ab

cd]"

);"[

a−za

−z]"

:表示一

個以字母

開頭的字

符串;"

[0−9

]",[

a−za

−z0−

9]":表示乙個字串以乙個逗號後面跟著乙個字母或數字結束。

你也可以在方括號裡用』 ^ 』 不希望出現的字元,』^'應在方括號裡的第一位。(如:"% [ ^a-za-z]%「表

示兩個百分號中不應該出現字母)。

為了逐字表達,必須在」^. $()¦+?{ "這些字元前加上轉移字元』』。

請注意在方括號中,不需要轉義字元。

正則規範空格問題

需求 規範段落中的空格,英文與中文間,英文與數字間,漢字與漢字,數字與數字,英文與英文間的空格不做處理。例如 enligsh 中文 123中文,abc234 要實現 english 中文123中文,abc 234 解決方案 public string matchkg string source s ...

CMD規範學習

cmd規範全稱是common module definition。在這個規範中,主要規範了基本的書寫格式和互動規則。在cmd規範中,乙個模組就是乙個檔案。的書寫格式如下 define factory 其中define是乙個全域性函式函式,用來定義模組,define接受factory引數 factor...

正規表示式規範

來自 wiki 歷史 正規表示式的posix規範,分為 基本型正規表示式 basic regular expression,bre 和擴充套件型正規表示式 extended regular express,ere 兩大流派。在相容posix的unix系統上,grep和egrep之類的工具都遵循pos...