正則表達式淺解

正則表達式:由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能。

擴展正則表達式元字符:

字符匹配:
. 匹配任意單個字符
[] 匹配指定范圍內的任意單個字符
[^] 匹配指定范圍外的任意單個字符
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母
[:upper:] 大寫字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
[:digit:] 十進制數字
[:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號

匹配次數:
用在要指定次數的字符后面,用于指定前面的字符要出現的次數
* 匹配前面的字符任意次,包括0次 貪婪模式:盡可能長的匹配
.* 任意長度的任意字符
? 匹配其前面的字符0或1次
+ 匹配其前面的字符至少1次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
{,n} 匹配前面的字符至多n次
{n,} 匹配前面的字符至少n次

位置錨定:定位出現的位置
^ 行首錨定,用于模式的最左側
$ 行尾錨定,用于模式的最右側
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 詞首錨定,用于單詞模式的左側
\> 或 \b 詞尾錨定;用于單詞模式的右側
\<PATTERN\> 匹配整個單詞

分組:
()
后向引用:\1, \2, …
或者:
a|b: a或b
C|cat: C或cat
(C|c)at:Cat或cat

正則表達式中的3個重要符號:Bracket(括號), caret(插入符號)和Dollars(美元符號)

Bracket:

在正則表達式中有3種類型的括號201111170806251752

方括號 “[]”和花括號”{}” 。

方括號”[]”內是需要匹配的字符,花括號”{}”內是指定匹配字符的數量。

圓括號”()” 則用來分組。

Caret:

插入符號 “^” 表示正則式的開始。

Dollars:

美元符號”$” 表示正則式的結束。

現在你知道上面的3個語法后,你就可以寫世界上任何一條驗證規則了。比如下面的例子就很好的說明了上面3條正則語法是如何協調運作的:

^[a-z]{1,2}$

  • 上面的這條正則式只能匹配a-z的英文字母,同樣是在中括號中標明匹配范圍。
  • 花括號中則是標明匹配字符串的最小長度和最大長度。
  • 最后為了讓表達式更規則,分別在開頭和結尾加上了插入符號”^”和美元符號”$”。

現在我們就用上面的3條語法來實現一些正則表達式的驗證規則:

1.如何匹配像91230456, 01237648這樣的固定8位數?

“^[0-9]{8}$”

2.如何驗證最小長度為3最大長度為7的數字,如:123, 1274667, 87654?

“^[0-9]{3,7}$”

3.如何驗證像LJI10201020那樣的發票編號,前3個是字母剩余為8位長度的數字?

“^[[:alpha:]]{3}[0-9]{8}$”

4.如何驗證簡單的網址URL格式?

“^www[.][[:alnum:]]{1,}[.](com|org)$”

5.如何驗證email格式?

“^[[:alnum:]]{1,}@[[:alnum:]]{1,}.(com|ong)$”

6.如何驗證值在0-25的數字?

“^(([0-9])|(1[0-9])|(2[0-5]))$”

7.驗證格式為YYYY/MM/DD的日期?

“^(1[9][7-9][0-9]|2[0][0-9][0-9])[/]([1-9]|0[1-9]|1[0-2])[-/]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])$”

以上例子由淺入深,基本涵蓋了正則表達式的一些基本用法,有利于初級階段的學習與思考。

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95124

(1)
煙花兒煙花兒
上一篇 2018-04-07 11:47
下一篇 2018-04-07 15:29

相關推薦

  • Linux文件管理類命令

    一,linux 文件管理類命令 ls 命令:list directory contents;列出指定目錄下的內容 SYNOPSIS: ls [OPTION]… [FILE]… OPTION: -a :–al顯示所有文件,包括隱藏文件 -A :–almost-all:顯示除 . 和 ..外的所有文件 -l :–long 長格式顯示列表,即文件的詳細屬性信息 -…

    2018-05-15
  • Linux基本指令

    hostname??完整主機名cat?+文件路徑??可查看文件信息cat /etc/shells??顯示所有shelluname -r????查看內核版本ls?cpu???查看cpu信息free命令??查看內存?后面加-k是顯示的內存以kb為單位,-m(MB),-g(GB),-h顯示易讀單位lsblk??查看硬盤dmesg??查看計算機啟動的一些相關信息dm…

    2018-07-22
  • linux ACL訪問控制列表

    1.ACL介紹 Linux 下用戶對文件的操作權限有 r-讀, w-寫, x-可執行三種,而對linux 下的文件而言,用戶身份分為:所有者, 所屬組, 其它人, 且文件的所有者,所屬組都只能是一個,所以在對文件分配用戶的使用權限時,只能對這三種身份進行分配rwx 權限.Linux 主要作為服務器系統使用,用戶眾多.所以在實際使用場景中,這三種身份并不能很好…

    Linux筆記 2018-04-08
  • 第六周學習

    Linux學習第六周

    2018-08-04
  • DNS服務詳解

    本文主要介紹:名字解析、DNS服務、實現主從服務器、實現子域、實現view、編譯安裝、壓力測試、DNS排錯

    2018-06-08
  • fstab、init文件創建,內核啟動管理

    /etc/下的fstab文件和/sbin/下的init文件的創建,內核啟動列表管理簡述

    2018-05-15
欧美性久久久久