LINUX学习之正则表达式(十二)

普通正则

元字符

元字符 匹配描述
. 匹配除了换行符以外的任意单个字符
* 前导字符出现0次或连续多次
.* 任意长度字符
^ 行首(以…开头)
` 元字符
------ ------------------------------------------
. 匹配除了换行符以外的任意单个字符
* 前导字符出现0次或连续多次
.* 任意长度字符
^ 行首(以…开头)
| 行尾(以…结尾)                              |

| ^| 元字符 | 匹配描述 | | ------ | ------------------------------------------ | | . | 匹配除了换行符以外的任意单个字符 | | | 前导字符出现0次或连续多次 | |. | 任意长度字符 | |^ | 行首(以…开头) | | 空行 | |[] | 匹配括号里任意单个字符或一组单个字符 | |[^] | 匹配不包含括号里任一单个字符或一组单个字符 | |[1] | 匹配以括号里任意单个字符或一组单个字符开头 | |[]| 匹配非括号里任意单个字符或一组单个字符开头 | |< | 取单词的头 | |> | 取单词的尾 | |< >` | 精确匹配 |


实例演示

创建test.txt文件用于正则匹配操作, 文件内容如下:

ggle
gogle
google
gooogle
goooooogle
gooooooogle
taobao.com
taotaobaobao.com

jingdong.com
dingdingdongdong.com
10.1.1.1
Adfjd8789JHfdsdf/
a87fdjfkdLKJK
7kdjfd989KJK;
bSKJjkksdjf878.
cidufKJHJ6576,

hello world
helloworld yourself

**1.匹配包含'go'的字符串: `grep 'go' test.txt`**

image-20221018232926698


**2.匹配以'g'开头的字符串: `grep '^g' test.txt`**

image-20221018233400385


**3.匹配以'g'开头,后接一个任意字符的字符串:`grep '^g.' test.txt`**

image-20221020102121356


**4.匹配以'g'开头,后接多个任意字符的字符串: `grep '^g.*' test.txt`**

image-20221020102435071


**5.匹配所有字符: `grep '.*' test.txt`**

image-20221020102645393


**6.匹配以'gle'结尾的字符串: `grep 'gle$' test.txt`**

image-20221020102939310

7.匹配以'gle'结尾的所有字符串: grep '.*gle$' test.txt

image-20221020103415245


**8.匹配以字符'a','b','c'开头的字符串: `grep '^[abc]' test.txt` **

image-20221020103755646


**9.匹配非字符'a','b','c'开头的字符串: `grep '^[^abc]' test.txt`**

image-20221020104042127


**10.匹配含有字符'a','b','c'的字符串: `grep '[abc]' test.txt`**

image-20221020104625050

扩展正则

扩展元字符

扩展元字符(需用grep -Eegrep) 功能
+ 匹配一个或多个前导字符
? 匹配零个或一个前导字符
|
() 将字符组合成一个整体
前导字符重复n次
前导字符重复至少n次
前导字符重复n到m次
扩展元字符(需用grep -P) 功能
\d 匹配数字, 等价于[0-9]
\w 匹配字母数字下划线, 等价于[a-zA-Z0-9_]
\s 匹配空格、制表符、换页符, 等价于[\t\r\n]

实例演示

1.grep -E 'o+gle' test.txt

image-20221020141052127


**2. `grep -E 'o?gle' test.txt`**

image-20221020141520613


**3.匹配前导字符‘o’至少出现两次的字符串: `grep -E 'go{2,}' test.txt` **

image-20221020141809380


**4.匹配前导字符'tao'至少出现两次的字符串: `grep -E '(tao){2,}' test.txt`**

image-20221020142042456


**5.匹配包含'hello'或'jingdong'的字符串:`grep -E '(hello|jingdong)' test.txt`**

image-20221020142345370


**6.匹配IP格式的字符串: `grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}.[0-9]{1,3}' test.txt` 或 `grep -P '(\d){1,3}\.(\d){1,3}\.(\d){1,3}.(\d){1,3}' test.txt`**

此处要注意对特殊字符的转义, 例如这里就对.使用了转义符号

image-20221020144411057


  1. ↩︎

posted @ 2023-01-22 16:02  亨利其实很坏  阅读(44)  评论(0编辑  收藏  举报