; 正则表达式基础 | Linux运维部落

正则表达式基础

正则表达式正则表达式

元字符:

. 点表示任意单个字符 最少一次

\w 匹配字母、数字、下划线、或汉字。

\s 匹配任意空白字符

\d 匹配数字

\b 匹配字符的开始或结束

^ 匹配首字符

$ 匹配末尾字符

\ 转义字符

反义:

\W 匹配字母、数字、下划线、或汉字。

\S 匹配任意空白字符

\D 匹配数字

\B 匹配字符的开始或结束

[^n] 匹配除了n的字符

限定符:

* 重复任意次

+ 至少一次

? 重复0次或1次

{n} 重复n次

{n,} 至少重复n次,无上线++ {,n} 至多重复n次,最少0次 (不重复)

{n,m} 至少重复n次,至多重复m次。(字符重复n到m次)

[1-9] 重复指定范围内的字符 贪婪与懒惰模式:

*? 匹配任意字符(尽量少的次数)

+? 重复一次或多次(尽量少的次数)

?? 重复0次或1次(尽量少的次数)

{n,m}? 重复n到m次(尽量少的次数)

{n,}? 至少重复n次(尽量少的次数)

高级进阶: 捕获: (exp)

匹配括号里的字符(串),并自动保存到自动命名的组里

(?<name>ex) 匹配ex,并捕获文本保存到名字为name的组里

(?:exp) 匹配exp 不捕获文本,也不匹配组号

零宽断言: (?=exp) 匹配exp前面的位置

(?<=exp) 匹配exp后面的位置

(?<!exp) 匹配后面非exp的位置

(?<!exp) 匹配前面非exp的位置

shell不支持零宽断言

实例:

1. 取出IP地址的方法

a.

[root@yanghua shiyan]# ifconfig eth0|grep ‘inet addr’|sed ‘s/^.*addr://g’|sed ‘s/B.*//g’ 192.168.210.128

正则匹配的秘籍: 匹配目标之前的内容时,用“^.*”任意字符开头,结尾给出具体字符, 例如:

取IP

[root@yanghua shiyan]# ifconfig eth0|grep ‘inet addr’ inet addr:192.168.210.128 Bcast:192.168.210.255 Mask:255.255.255.0

匹配目标之后的内容时,用“.*$”任意字符结尾,开头给出具字符。

[root@yanghua shiyan]# ifconfig eth0|grep ‘inet addr’|sed ‘s/^.*addr://g’ 192.168.210.128 Bcast:192.168.210.255 Mask:255.255.255.0
b.

[root@yanghua shiyan]# ifconfig eth0|sed -rn ‘s/^.*r:(.*) Bc.*/\1/p’ 192.168.210.128 此处用到了Sed的高级用法:捕获功能 (exp) 匹配括号里的字符(串),并自动保存到自动命名的组里 但是要注意格式:

sed -n -r s/(exp)正则/默认的组’\1 \2’/p’命令’
c.

sed超复杂用法:(仅供参考)

[root@yanghua shiyan]# ifconfig eth0|sed -rn ‘s/^.*r:([0-9]{,3}.[0-9]{,3}.[0-9]{,3}.[0-9]{,3}) Bc.*/\1/p’ 192.168.210.128
实战:取出IP和网关

[root@yanghua ~]# ifconfig eth0 eth0

Link encap:Ethernet HWaddr 00:0C:29:14:DD:D3 inet addr:192.168.210.128 Bcast:192.168.210.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe14:ddd3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3494 errors:0 dropped:0 overruns:0 frame:0 TX packets:2214 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:306833 (299.6 KiB) TX bytes:234127 (228.6 KiB) Interrupt:19 Base address:0x2000

[root@yanghua shiyan]# ifconfig eth0|sed -r -n ‘s/^.*r:(.*) Bcast:(.*) Ma.*/\1\n\2/p’ 192.168.210.128 192.168.210.255

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:/88394

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达直属  万达注册  万达娱乐主管  万达娱乐主管  万达娱乐平台  华宇招商  万达主管QQ  万达招商  万达娱乐开户