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

普通正则

元字符

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

实例演示

创建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,}前导字符重复至少n次
{n,m}前导字符重复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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值