天天看點

《精通正規表達式》讀書筆記摘要: 第一章 入門(3)

一些例子

變量名:

程式設計語言中的變量名有一定的命名規則:隻能由字母,數字及下劃線組成,并且不能以數字開頭。

[a-zA-Z_][a-zA-Z_0-9]* 這個表達式即可滿足這樣的需求,如果有長度限制,比如不能多于32個字元,可把*換成區間量詞即可{0-31}, 為什麼不是{0-32},因為前面已經有了一個非數字字元了。

引号内的字元串:

"[^"]*" 表達式兩端比對字元串兩端的引号,字元組内除 " 的任何字元,數量不限。

美元金額:

首先看美元金額的一般寫法:$6583 , $7.00  ,   $39234.89  , $0.01 等。第一個位置一定是美元符号$,後面由數字和小數點組成,并且是兩位小數點,小數點前面至少有一個0到9的數字, 小數點後面的數字可有可無,當然連同小數點。

/$[0-9]+(/.[0-9]{0,2})?

這個表達式中第一個美元符号要用轉義符/ ,否則就成了行結束标志了,顯然不行。用了一個可選符?來比對小數點及後面的數字,簡潔而直接。

現在看似這個表達式應該可以勝任了,但是,它還不能比對 $2,234.98,還得需要改造。

/$([0-9],?)+(/.[0-9]{0,2})? 這樣一來比對以逗号隔開的金額就沒有問題了,但是美元金額還有另外一個寫法:$.98,小于一進制可省略前面的0。OK繼續改造:/$(([0-9],?)+)?(/.[0-9]{0,2})? ,嗯,現在看起來應該比較完備了。

HTML網頁位址:

靜态網頁位址的典型格式是:http://www.mysite.com/exmaple/inde.html (.htm)

可以看出該類字元串是由 http:// + 域名 + 目錄名 + 檔案名 +.html(htm) 組成的,再分析每個組成部分的規則。

http:// 可有可無。

域名隻能由字母,數字,下劃線,劃線,點号組成。

目錄名和檔案名就比較複雜了,能包含的字元也很多樣可以使用[-a-z0-9_:@&?=+,.!/~%$]* 來比對。

(http://)?[-a-z0-9_:@&?=+,.!/~%$]*.html?

(待續)

繼續閱讀