標籤:元字元 取反 多個 文本 txt 運算式 識別 重複 減法
一、Regex - 入門篇
1.元字元,及其常用例子
. 匹配除結束符以外的任一字元,某些情況下不能匹配行起始符
^ 匹配行的開始
^The 匹配以The打頭的行
$ 匹配行的結束
home$ 匹配以home結尾的行
^$ 匹配空行
? 匹配0或1個任一字元
* 匹配0到任意多個任一字元
+ 匹配1到任意多個任一字元
{} 表示帶尋找的字元要重複的次數
{ 量詞起始符
} 量詞結束符
{n,} 代表前面的字元可以重複n到無窮多次
{n1,n2} 代表前面的字元可以重複n1到n2次
[ 字元組的起始符
] 字元組的結束符
[0-9] 字元組,匹配數字0-9
[^0-9] 字元組,對[0-9]取反,匹配非數字0-9的任一字元
\ 逸出字元
[\+\-\*\-] 字元組,代表加減乘除號
() 用於捕獲分組
( 捕獲分組的起始符
) 捕獲分組的結束符
| 用或(or)的方法進行匹配
\d 數字字元,匹配任意阿拉伯數字,等同於[0-9]
\D 非數字字元,匹配任何一個非數字字元,即\d 取反
\w 小寫\w 單詞字元,匹配字母、數字、底線,即[_a-zA-Z0-9]
\W 大寫的\W 非單詞字元,匹配非單詞字元,即對小寫\w取反,即[^_a-zA-Z0-9]
\a 警告聲音輸出
\b 退格符
\c x 控制符
\f 換頁符
\t 垂直的定位字元
\v 小寫\v 水平的定位字元
\V 大寫\V 非水平定位字元
\h 水平空白符
\H 非水平空白符
\r 斷行符號符
\n 分行符號
\0 Null 字元
\s 小寫\s 匹配空白符,即,能匹配空格、定位字元\t、分行符號\n、斷行符號符\r
\S 大寫\S 匹配非空白符,即小寫\s取反
\0 XXX 字元的八進位值
\x xx 字元的十六進位值
\u xxx 字元的Unicode值
2. 舉例:捕獲分組
將模式放入一對圓括弧中,就是將它放進了分組,例如,(\d)\d
4. 舉例:後向引用
捕獲分組後,後面可以用\1對捕獲的內容進行後向引用,例如,(\d)\d\1,該模式可以匹配數字字元707,101,212, 505, 等等
5. 例子若干,自行體會,加強理解
\d+\.?\d* 匹配形如正整數、正小數的字元
\-?\d+\.?\d* 匹配形如正整數、負整數、正小數、負小數的字元
[^\d\+\-\*\/\(\)\.] 匹配這些字元以外的字元:數字字元、加減乘除號、正反括弧、小數點
[\+\-\*\/\.]{2,} 匹配連續的加減乘除號、小數點
[^\(\)]*\([^\(\)]+\)[^\(\)]* 匹配配對的括弧
\(([\+\-\*\/]*\d+\.?\d*)+\) 匹配最內層括弧
(.*)(\d+\.?\d*)([\*\/])(\d+\.?\d*)(.*) 匹配乘除法運算式
(\-?\d+\.?\d*)([\+\-])(\-?\d+\.?\d*)(.*) 匹配加減法運算式
二、Regex - 進階篇
1.使用正在運算式為純文字標籤HTML5標籤
例如,sed -n ‘s/^/<h1>/;s/$/</h1>/p;q‘ rime.txt
rime.txt中的文字將以h1格式(即所有字母大寫)輸出
2. 邊界
斷言,又稱零寬度斷言(zero-width assertion),用於標記邊界,但不耗用邊界上的字元,即字元不會返回到匹配結果中。零寬度斷言不匹配字元,而是匹配字串中的位置。例如^ $,也叫作錨位符(anchor)
^ 匹配行的開始
$ 匹配行的結束
\b 匹配單詞邊界,表面上會匹配空格或起始行,實際匹配的是零寬度的不存在的東西
\B 匹配非單詞邊界,即\b 取反,例如,\Be\B 不會匹配字母e兩邊的字元,但會識別e兩邊是否是非單詞邊界(即,用於標記邊界,但不會將邊界返回到匹配結果中)
可以用\Q和\E之間的字元集,匹配字串的字面值。例如\Q$\E,會匹配$,而非行結束符,因為\Q和\E之間的任一字元都會被解釋為一般字元。
二、python中的re模組
python與Regex