正則表示式中限定符與定位符的使用
阿新 • • 發佈:2022-03-29
目錄
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 | 限定非單詞(字)邊界的字元,用的很少 |