1. 程式人生 > 其它 >正則表示式中限定符與定位符的使用

正則表示式中限定符與定位符的使用

目錄

193. 有效電話號碼

思路

使用正則表示式來檢索符合要求的字串。


需要找出固定的字元位置與可變字元的規律,然後用正則表示式中的普通字元、特殊字元、限定符、定位符來描述對應的規律。

使用正則表示式描述
1、表達(xxx) xxx-xxxx

^\([0-9][0-9][0-9]\) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$

優化:

^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$
  • \:轉義符
  • ^:限制開頭
  • $:限制結尾
  • [0-9]:數字
  • [0-9]{3} :表示三位數

2、表達 xxx-xxx-xxxx

^[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$

優化:

^[0-9]{3}-[0-9]{3}-[0-9]{4}$

3、同時表示xxx-xxx-xxxx和 (xxx) xxx-xxxx

^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$
  • ():標記一個表示式
  • |:指明兩項之間的任意選擇

程式碼

grep

grep -P '^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$' file.txt
  • -P:可以讓grep使用perl的正則表示式語法,因為perl的正則更加多元化,能實現更加複雜的場景
    awk
awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt
  • //純字元匹配

gawk

gawk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt

快速查看錶

特殊字元表達

限定符表達

限定符前面字元的出現次數

限定符 表達含義
* 出現次數>=0
+ 出現次數>=1
? 出現次數 0 or 1, 等價{0,1}
{n} 出現次數=n
{n,} 出現次數>=n
{n, m} n=< 出現次數<= m

定位符表達

定位符 表達含義
^ 字串開始的位置
$ 字串結束的位置
\b 限定單詞(字)的字元,常用來確定一個單詞,可以結合兩個‘\b’使用
\B 限定非單詞(字)邊界的字元,用的很少