本文主要參考http://www.jb51.net/tools/zhengze.html
正則表達式是用來描述文本內容或者字符串是否符合某種規則的方法。
例如希望判斷一行數字是否是一個有效的電話號碼,或者判斷用戶輸入的內容是否是一個有效的郵箱地址等。
微軟正則表達式的規範如下鏈接所示:
http://msdn.microsoft.com/zh-cn/library/az24scfc.aspx
下面內容爲學習正則表達式的記錄,是一些入門的比較基礎的東西,並實現一些小的測試。(面試中曾遇到過用Python編寫正則表達式,判斷電話號碼是否合法)
首先需要了解 \b 它是正則表達式中的一個比較特殊的代碼,一般用她來匹配一個位置,該位置的前一個或者後一個字符不全是字母或數字(可以用\w表示)
例如,匹配‘hi’,使用\bhi\b,則會匹配him,thi,hill等單詞中的hi
常用的元字符如下所示:
常用的限定符如下所示:
想要匹配沒有預定義元字符的字符集,可以使用[]中括號,例如想要匹配奇數,可以使用[13579],也可以指定一個範圍[a-z]用來匹配小寫字母
分支匹配,類似於或操作符|,用來匹配不同的正則規則,如果第一個不匹配,查看第二個。比如th|e|is|at,可以用來匹配the,that,this
如果想要匹配重複的內容,可以使用分組來限定要匹配的的內容,然後在分組後限定要重複的次數。分組使用小括號標示()。例如一個正確的IP地址匹配表達式如下:
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
分組構造主要用於捕獲輸入字符串的子字符串。詳細解釋見微軟的MSDN鏈接:
http://msdn.microsoft.com/zh-cn/library/bs2twtah.aspx
常用的分組語法如下所示:
(exp)的例子,用來捕獲以空格分開的兩個相同的單詞:(\w+)\s(\1)。通過使用語法”\數字”來匹配前面的分組(\w+),用在同一個正則表達式中
(?<name>exp)的例子,用來捕獲以空格分開的兩個相同的單詞(\k用來後向匹配分組):(?<name1>\w+)\s\k<name1>
(?:exp)只匹配,並不捕獲文本內容
(?=exp)的例子,用來捕獲以標點符號結尾的單詞:\w+(?=\.)。例如“this is a test.”中的test
(?<=exp)的例子,用來捕獲以19開頭後面跟兩個數字的單詞:(?<=19)\d{2}\b,如“1986”中的86
(?!exp)的例子,用來捕獲不是以un開頭的單詞:\b(?!un)\w+\b,如“university Beijing”中的Beijing
(?<!exp)的例子,用來捕獲不是以19開頭後面跟兩個數字的單詞:(?<!19)\d{2}\b,如“1870 1900”中的70
常用的反義字符如下所示:
正則表達式中的註釋以#開始
關於平衡組的定義和解釋未添加,待續。。。。