通過一個小例子學習正則表達式

通過幾個小例子,來說明一下如何理解正則表達式。

例1、比如有下面的需求:

1、Number can start with +- or . symbol.

Example:

✔+4.50

✔-1.0

✔.5

✔-.7

✔+.4

✖ -+4.5

 2、Number must contain at least  decimal value.

For example:

✖ 12.

✔12.0  

 3、Number must have exactly one . symbol.

以上需求(實際上就是判斷一個字符串是不是Float類型)的正則表達式爲:

^[-+]?[0-9]*\.[0-9]+$

解釋:

^  表示匹配字符串的開始位置

[  ] 中括號表示匹配括號中一個字符 範圍描述 如[0-9 a-z A-Z]。

?  表示匹配零次或一次

到這爲止,^[-+]?表示字符串要以一個加號或減號爲開頭,或者沒有加減號也可以。

這裏?的作用,是可以沒有[+-],如果有隻能有一個[+-]。

接着往下,[0-9]*

*  表示匹配 零次到多次

也就是說只能是0-9的數字,可以是0個,1個或多個

接下來的\.

由於 .  在正則表達式中有特殊含義(.  表示匹配單個字符),

所以,如果想精確匹配 .  的話,點前面需要加上轉義字符\

最後的[0-9]+$

+  表示匹配 一次到多次 (至少有一次)

$  表示匹配字符串的結束位置

也就是說,小數點後面必須至少有一個數字,也可以是多個數字,並且以這些數字結束($的作用)。

 

例2、匹配字符串中重複的數字或者字母(重複的可以是2個以上的字符),

如下面字符串中的紅色字符,是我們要抽出的結果。

..1234567891011121314SSome__Randd1718202122223

正則表達式爲:([a-zA-Z0-9])\1+

解釋:

(  ) 小括號表示匹配括號中全部字符,並且把匹配的字符生成數組

\1 表示2個重複的字符,+ 表示可以是多個重複的字符

注意,爲什麼不能用\w呢? 因爲\w通常表示英文字母或數字或下劃線"_"

如果用\w,就會把示例中的"__"也給匹配出來。

但是你是可以把上面的0-9換成\d的。(\d  表示數字   \D  非數字)

 

例3,再找一個{}使用的例子,比如取得指定字符串中連續兩個以上元音字母。

rabcdeefgyYhFjkIoomnpOeorteeeeet

結果應該爲:

ee
Ioo
Oeo
eeeee

正則表達式:([aeiouAEIOU]{2,})

{  } 大括號用於限定匹配次數  如 {n}表示匹配n個字符  {n,}表示至少匹配n個字符  {n,m}表示至少n,最多m

 

更多的正則表達式的用法和用例,可以參考:

https://www.cnblogs.com/mzmy/p/11201377.html

https://www.jianshu.com/p/9c4979a3b7e4  ->介紹了?: ?= ?! ?<= ?<!的用法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章