正則表達式,很強大.撿起來,提高工作效率.
文章目錄
基礎語法:
普通字符-略
非打印字符-略
特殊字符
特殊字符 | 描述 |
---|---|
^ | 匹配輸入字符串的開始位置,除非在方括號表達式中使用,此時它表示不接受該字符集合。要匹配 ^ 字符本身,請使用 ^。 |
$ | 匹配輸入字符串的結尾位置。如果設置了 RegExp 對象的 Multiline 屬性,則 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,請使用 $。 |
. | 匹配除換行符 \n 之外的任何單字符。要匹配 . ,請使用 . 。 |
* | 匹配前面的子表達式零次或多次。要匹配 * 字符,請使用 *。 |
+ | 匹配前面的子表達式一次或多次。要匹配 + 字符,請使用 +。 |
? | 匹配前面的子表達式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字符,請使用 ?。 |
( ) | 標記一個子表達式的開始和結束位置。子表達式可以獲取供以後使用。要匹配這些字符,請使用 ( 和 )。 |
{} | 一般是用來匹配的長度。比如\s{3}表示匹配三個空格,\s{1,3}表示匹配1到3個空格 |
[] | 定義匹配的字符範圍。比如[a-zA-Z0-9]表示相應位置的字符要匹配英文字符和數字。[\s*] 表示空格或者*號 |
\ | 將下一個字符標記爲或特殊字符、或原義字符、或向後引用、或八進制轉義符。例如, ‘n’ 匹配字符 ‘n’。’\n’ 匹配換行符。序列 ‘\’ 匹配 “”,而 ‘(’ 則匹配 “(”。 |
| | 指明兩項之間的一個選擇。要匹配 |
\d | 數字,等價[0-9] |
\s | 空格 |
\w | 匹配字母、數字、下劃線。等價於’[A-Za-z0-9_]’。 |
限定符
限定符用來指定正則表達式的一個給定組件必須要出現多少次才能滿足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6種。
定位符
定位符用來描述字符串或單詞的邊界,^ 和 $ 分別指字符串的開始與結束,\b 描述單詞的前或後邊界,\B 表示非單詞邊界。
選擇-略
反向引用-略
具體的,參見
正則表達式語法
常用表達式
被檢索的文本:(僅兩行==兩個換行符)
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz zyxwvutsrqponmlkjihgfedcba
19-09-30 19:37:30 [376.2][PLC][Send ][239] 68 EF 00 43 04 00 00 00 00 DC 00 00 95 31 71 37 6D 7B 34 47 BB 8A F1 01 00 02 00 D0 00 68 6D 7B 34 47 BB 8A 68 11 04 34 33 39 38 65 16 68 6D 7B 34 47 BB 8A 68 11 04 34 34 39 38 66 16 68 6D 7B 34 47 BB 8A 68 11 04 34 35 39 38 67 16 68 6D 7B 34 47 BB 8A 68 11 04 34 36 39 38 68 16 68 6D 7B 34 47 BB 8A 68 11 04 34 37 39 38 69 16 68 6D 7B 34 47 BB 8A 68 11 04 34 38 39 38 6A 16 68 6D 7B 34 47 BB 8A 68 11 04 34 39 39 38 6B 16 68 6D 7B 34 47 BB 8A 68 11 04 34 3A 39 38 6C 16 68 6D 7B 34 47 BB 8A 68 11 04 34 3B 39 38 6D 16 68 6D 7B 34 47 BB 8A 68 11 04 34 3C 39 38 6E 16 68 6D 7B 34 47 BB 8A 68 11 04 34 3D 39 38 6F 16 68 6D 7B 34 47 BB 8A 68 11 04 33 32 34 33 59 16 68 6D 7B 34 47 BB 8A 68 11 04 33 32 35 33 5A 16 9D 16
搜索指定字符開頭,指定字符結尾
搜索"mn"開頭,"xyz"結尾的可能.
mn.*?cba
結果:
共1處匹配.如下圖.
.*? 組合解釋
1、. 匹配任意除換行符“\n”外的字符;
2、*表示匹配前一個字符0次或無限次;
3、+或後跟?表示非貪婪匹配,即儘可能少的匹配,如?重複任意次,但儘可能少重複;
4、 .*? 表示匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。
如:a.*?b匹配最短的,以a開始,以b結束的字符串。如果把它應用於aabab的話,它會匹配aab和ab。
搜索以指定字符開頭(每行的開頭),指定字符結尾(每行的結尾)
問題:如下三個正則表達式有何不同?
mn.*?cba$
^mn.*?cba
^mn.*?cba$
結論:
即正則表達式特殊字符^與$的含義.
分別對應,匹配輸入字符串的開始位置與結束位置,詳見本章節的第一部分(語法).
mn.*?cba$
cba必須是輸入字符串的結尾字符串,位於中間部分也是無效的.
^mn.*?cba
mn必須是輸入字符串的開始字符串,位於中間部分也是無效的.
^mn.*?cba$
mn必須是輸入字符串的開始字符串,位於中間部分也是無效的.
同時,cba必須是輸入字符串的結尾字符串,位於中間部分也是無效的.
檢索的輸入的字符串,是以換行符爲單位的.
表達式1
mn.*?cba$
結果如下圖,一處匹配.
表達式2
^mn.*?cba
未找到符合條件的字符串.
表達式3
^mn.*?cba$
結果依舊如上圖,無匹配.
匹配數字
匹配3個數字
\d{3}
或者
[0-9][0-9][0-9]
匹配3-8個數字
\d{3,8}
查看檢索"04 00 00 “開頭,中間2個字符,” 00 DC"結尾
04 00 .. 00 00 DC
或者
04 00 \d{2} 00 00 DC
搜索特殊字符的關鍵字,需要轉義字符.
需要檢索如下圖標記的關鍵字.
'[‘與’]'屬於特殊字符,對於notepad工具.
dwAlmFlag2:\d{8}\[MPNo=33\]
最全的常用正則表達式大全
參見:
最全的常用正則表達式大全