正則表達式是個好東西,在匹配文檔過程中很有效钞脂,所以花了點時間學習了一下。做一些筆記阎毅。
https://deerchao.net/tutorials/regex/regex.htm#howtouse
這篇寫的好扇调,講得比較細致,把里面的重點摘出來使用燃领。
一些實用的正則表達式工具和資料:
在線regex測試工具:http://www.regexpal.com/
正則表達式語法:https://msdn.microsoft.com/zh-cn/library/az24scfc.aspx
《精通正則表達式》《正則表達式必知必會》
筆記內(nèi)容
1.字符匹配:
匹配任意內(nèi)容: . (匹配除\n之外的任意字符)
匹配文字:\w 匹配非文字:\W
匹配數(shù)字:\d 匹配非數(shù)字:\D
匹配任意空白符(空格猛蔽,tab,換行符毁枯,全角空格):\s
匹配非空白符:\S
匹配標點符號:\p{P}
2.定位點:
匹配單詞邊界:\b 匹配非單詞邊界:\B
字符串開始种玛、結(jié)束:^ $
正字符組:[ ]正字符組指定一個字符列表娱节,其中的任何一個字符可出現(xiàn)在輸入字符串中以便進行匹配肄满。 此字符列表可以單獨指定和/或作為范圍指定
負字符組:[^]
3.數(shù)量匹配:
4.分組構(gòu)造
構(gòu)建子表達式:(exp)
捕獲子表達式:
\1(這個數(shù)字代表子表達式的初始數(shù)字)蹂窖;
命名為name的exp: (?<name>exp)或(?'name'exp)
捕獲該表達式:\k<name> \k'name'或(?(name)yes|no)(表示:name表達式匹配成功則執(zhí)行yes表達式横媚,失敗則執(zhí)行no表達式)
(?<duplicateWord>\w+)\s\k<duplicateWord>\W(?<nextWord>\w+)
零寬度正預測先行斷言(向后匹配):(?=) \b\w+(?=\sis\b) 負預測:(?!) \b(?!un)\w+\b
零寬度正回顧先行斷言(向前匹配):(?<=) (?<=\b20)\d{2}\b 負預測:(?<!) (?<!(Saturday|Sunday) )\b\w+ \d{1,2}, \d{4}\b
5.轉(zhuǎn)義符:
( )需要被轉(zhuǎn)義
6.貪婪&懶惰匹配
匹配:aabab
a.?b —>aab
a.b —>aabab
運用:
在線regex測試工具:http://www.regexpal.com/
1.匹配全文中的IP地址
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
2.匹配可嵌套的HTML結(jié)構(gòu)
<div[>]*>[<>](((?'Open'<div[^>]>)[<>]*)+((?'-Open'</div>)[<>])+)(?(Open)(?!))</div>
3.匹配手機號碼
/**
- 移動號碼段:139孝宗、138问潭、137狡忙、136灾茁、135、134旬陡、150录粱、151啥繁、152旗闽、157适室、158、159汽畴、182忍些、183罢坝、187嘁酿、188闹司、147
- 聯(lián)通號碼段:130、131薪铜、132谓娃、136滨达、185锌订、186辆飘、145
- 電信號碼段:133蜈项、153、180跑芳、189
**/
/((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}/g —js寫法
4.搜索重復的單詞(this this 或者go go 等內(nèi)容)
(\b\w+\b)\s+\1
\b(?<Word>\w+)\b\s+\k<Word>\b
未完待續(xù)际乘。罪塔。