正規表示式的一些參考

2021-08-30 18:30:08 字數 2529 閱讀 3643

1.1 句點符號 

假設你在玩英文拼字遊戲,想要找出三個字母的單詞,而且這些單詞必須以「t」字母開頭,以「n」字母結束。另外,假設有一本英文本典,你可以用正規表示式搜尋它的全部內容。要構造出這個正規表示式,你可以使用乙個萬用字元——句點符號「.」。這樣,完整的表示式就是「t.n」,它匹配「tan」、「ten」、「tin」和「ton」,還匹配「t#n」、「tpn」甚至「t n」,還有其他許多無意義的組合。這是因為句點符號匹配所有字元,包括空格、tab字元甚至換行符: 

1.2 方括號符號

為了解決句點符號匹配範圍過於廣泛這一問題,你可以在方括號(「」)裡面指定看來有意義的字元。此時,只有方括號裡面指定的字元才參與匹配。也就是說,正規表示式「t[aeio]n」只匹配「tan」、「ten」、「tin」和「ton」。但「toon」不匹配,因為在方括號之內你只能匹配單個字元:

1.3 「或」符號

如果除了上面匹配的所有單詞之外,你還想要匹配「toon」,那麼,你可以使用「|」操作符。「|」操作符的基本意義就是「或」運算。要匹配「toon」,使用「t(a|e|i|o|oo)n」正規表示式。這裡不能使用方擴號,因為方括號只允許匹配單個字元;這裡必須使用圓括號「()」。圓括號還可以用來分組,具體請參見後面介紹。

1.4 表示匹配次數的符號

表一顯示了表示匹配次數的符號,這些符號用來確定緊靠該符號左邊的符號出現的次數:

假設我們要在文字檔案中搜尋美國的社會安全號碼。這個號碼的格式是999-99-9999。用來匹配它的正規表示式如圖一所示。在正規表示式中,連字元(「-」)有著特殊的意義,它表示乙個範圍,比如從0到9。因此,匹配社會安全號碼中的連字符號時,它的前面要加上乙個轉義字元「\」。

圖一:匹配所有123-12-1234形式的社會安全號碼

假設進行搜尋的時候,你希望連字符號可以出現,也可以不出現——即,999-99-9999和999999999都屬於正確的格式。這時,你可以在連字符號後面加上「?」數量限定符號,如圖二所示:

圖二:匹配所有123-12-1234和123121234形式的社會安全號碼

下面我們再來看另外乙個例子。美國汽車牌照的一種格式是四個數字加上二個字母。它的正規表示式前面是數字部分「[0-9]」,再加上字母部分「[a-z]」。圖三顯示了完整的正規表示式。

圖三:匹配典型的美國汽車牌照號碼,如8836kv

1.5 「否」符號

「^」符號稱為「否」符號。如果用在方括號內,「^」表示不想要匹配的字元。例如,圖四的正規表示式匹配所有單詞,但以「x」字母開頭的單詞除外。

圖四:匹配所有單詞,但「x」開頭的除外

1.6 圓括號和空白符號

假設要從格式為「june 26, 1951」的生日日期中提取出月份部分,用來匹配該日期的正規表示式可以如圖五所示:

圖五:匹配所有moth dd,yyyy格式的日期

新出現的「\s」符號是空白符號,匹配所有的空白字元,包括tab字元。如果字串正確匹配,接下來如何提取出月份部分呢?只需在月份周圍加上乙個圓括號建立乙個組,然後用oro api(本文後面詳細討論)提取出它的值。修改後的正規表示式如圖六所示:

圖六:匹配所有month dd,yyyy格式的日期,定義月份值為第乙個組

1.7 其它符號

為簡便起見,你可以使用一些為常見正規表示式建立的快捷符號。如表二所示:

表二:常用符號

例如,在前面社會安全號碼的例子中,所有出現「[0-9]」的地方我們都可以使用「\d」。修改後的正規表示式如圖七所示:

圖七:匹配所有123-12-1234格式的社會安全號碼

一些正規表示式

要嚴格的驗證手機號碼,必須先要清楚現在已經開放了哪些數字開頭的號碼段,目前國內號碼段分配如下 移動 134 135 136 137 138 139 150 151 157 td 158 159 187 188 聯通 130 131 132 152 155 156 185 186 電信 133 153...

一些正規表示式

判斷是否是正整數if isnan paramvalue paramvalue 0 else 金額的格式判斷輸入金額的要求 整數字最多十位,小數為最多為兩位,可以無小數字 0 9 1 9 0 9 0 9 function checkmoney str 0 9 if re.test str else 手...

一些正規表示式

記錄一下 以防忘記 string hello 123 4567 world this is a regsssss res re.match w s d s d s w string 匹配到 hello 123 4567 world this 其中 代表乙個字串的開始 代表乙個字串的結尾 w 匹配字母...