故事開始的篇章^ ^
匹配不同類型的字符 :
字符類 | 匹配的字符 | 示例 |
\d | 從0~9的任一數字 | \d\d可以匹配72,但不匹配aa或7a |
\D | 非數字字符 | \D\D\D匹配abc,但不匹配123 |
\w | 任意單詞字符,如A-Z、a-z、0-9, 和下劃線 | \w\w\w\w匹配Ab_2,但不匹配@#$%或Ab_@ |
\W | 非單詞字符 | \W可以匹配@,但不匹配a |
\s | 任一空白字符,包括制表符,換行符,回車符,換頁符和垂直制表符 | 匹配所有傳統的空字符,包括用HTML,XML和其他標準定義的字符 |
\S | 任一非空白字符 | 每一個非空字符:A%&g3等 |
. | 任一字符 | 換行符除外\n |
[...] | 括號中的任一字符 | [abc]匹配單個字符a、b或c,但不能匹配其他字符[a-z]匹配a~z的任一字符 |
[^..] | 不在括號中的任意字符 | [^abc]匹配a/b/c除外的任一字符 |
指定匹配位置:
定位符 | 描述 |
^ | 其后的模式必須在字符串的開始處,如果是一個多行字符串,應位于任一行的開始。對于多行文本(包含回車符的字符串),需要設定Multiline標志 |
$ | 前面的模式必須在字符串的末尾處,如果是一個多行字符串,應該在任一行的末尾 |
\A | 前面的模式必須在字符串的開始處,多行標記被忽略 |
\z | 前面的模式必須在字符串的末尾處,多行標記被忽略 |
\Z | 前面的模式必須在字符串的末尾處,或是位于換行符前 |
\b | 匹配一個單詞的邊界,實質上是單詞字符和非單詞字符間的點。單詞字符是[a-zA-Z0-9_]中的任一字符。位于單詞的開始。 |
\B | 匹配一個非單詞邊界的位置,不在一個單詞的開始 |
指定重復字符:
重復字符 | 含義 | 舉例 |
(花括號)n | 匹配前面的字符n次 | x(花括號)2 匹配xx,但不匹配x或xxx |
(花括號)n, | 匹配前面的字符n次或更多 | x(花括號)2, 匹配2個或更多的x,如xx,xxxx |
(花括號)n,m | 匹配卡門的字符至少n次,至多m次 | x(花括號)2,4 匹配xx,xxx和xxxx,不匹配x或xxxxx |
? | 匹配前面的字符0次或1次,可以省略 | x?匹配x或空 |
+ | 匹配前面的字符1次或更多次 | x+匹配x或xxx... |
* | 匹配前面的字符0次或多次 | x*可以是空,或x,xxx.... |
備注由于花括號不不能顯示,只能用字描述,(花括號)n表示用一對花括號包含一個n
特殊字符的轉義:
轉意思序列 | 描述 |
\ | \ |
\. | . |
\* | * |
\+ | + |
\? | ? |
\| | | |
\( | ( |
\) | ) |
\{ | { |
\} | } |
\^ | ^ |
$ | $ |
\n | 換行 |
\r | 回車 |
\t | tab制表位 |
\v | 垂直制表位 |
\f | 換頁 |
\nnn | 匹配一個3位八進制表示的字符 3表示大寫C |
\xnn | 匹配2位十六進制的字符 \x43表示大寫C |
\unnnn | 4位十六進制表示的Unicode字符 |
\cV | 匹配一個控制字符,如\cV表示Ctrl+V |
^[\w\W]+$ 這個是正則表達式的貪婪模式
^[\w\W]+?$ 這個是正則表達是的懶惰模式
^(\d[-]*)[\dxX]$ 用來匹配ISBN 1-861008-23-6 1-86100-823-6
^(\d[-]*?)[\dxX]$ 同上不過這個是懶惰模式