正则表达式
约 777 字大约 3 分钟
2026-04-04
正则表达式
一、了解:通配符(bash程序自身的一个特殊语句)
★ 通配符 是一种特殊语句,用来模糊搜索文件。
## ★ * 表示:0或多个的<任意字符>
## ★ ? 表示:单个<任意字符>
## ★ [] 表示:匹配<字符列表或范围>中的<单个字符>
## [xyz] 设置:可选的<字符列表>
## [x-z] 设置:可选的<字符范围>
## [^xyz] 表示:不选择x、y、z
## ^ 表示<不匹配>,^ 必须是第一个字符
## ★ 举例
rm -rf /tmp/*
touch /tmp/{a,b,c,d,e}.txt
ls -l /tmp/[abc].txt ## 列出:a.txt b.txt c.txt
ls -l /tmp/[a-e].txt ## 列出:a.txt b.txt c.txt d.txt e.txt
ls -l /tmp/[^abc].txt ## 不列出:a.txt b.txt c.txt
二、简单了解:正则表达式
★ 通配符 不是 正则表达式
★ 正则表达式:描述了一种字符串的<匹配模式(pattern)>
比如:
echo "aabbcc" | grep -o "a"
echo "abbaaccaaa" | grep -o -E "a{2}[^a]+" | grep -o "aa"
★ 了解:正则表达式的组成
1. 普通的字符
2. 特殊的字符(元字符)
★ 了解:正则表达式的类型
1. 基本正则
2. 扩展正则(最常用),grep -E 调用<扩展正则>
3. Perl正则 ,grep -P 调用<Perl正则>
★ 了解:元字符
元字符 特殊含义 基本正则 扩展正则 Perl/Python正则
^ 行首 yes yes yes
$ 行尾 yes yes yes
. 任意单个字符 yes yes yes
? 前面一个字符,可以出现0次或1次 no yes yes
+ 前面一个字符,可以出现1次或多次 no yes yes
* 前面一个字符,可以出现0次或多次 yes yes yes
[] 匹配:<字符列表>中的<任意一个字符> yes yes yes
[abc]
[0-9a-zA-Z]
[^abc]
() 分组,每一个分组就是一个<项> no yes yes
| 逻辑或 no yes yes
{n} 匹配:<前一项>出现<n次> no yes yes
{n,} 匹配:<前一项>出现<n次 ~ 多次> no yes yes
{n,m} 匹配:<前一项>出现<n次 ~ m次> no yes yes
##################################################################
\d 匹配:任意单个数字 no no yes
\D 配置:任意单个非数字 no no yes
\s 配置:貌似空格的空格 yes yes yes
\S 匹配:单个<非空白字符> yes yes yes
\w 匹配:单个<单词的字符> yes yes yes
如:字母、数字、_下划线
\W 匹配:单个<非单词的字符> yes yes yes
★ 了解:\转义符
功能:还原<字符>的<原义>
举例:
<正则表达式>中的 . 是一个<元字符>,具备<特殊含义>
如果需要匹配<字符串>中的 . ,就必须进行转义: \.
★ 举例:
## 过滤出:httpd.conf配置文件中的<ServerName指令值>,不要显示<注释行中的ServerName>
yum install -y httpd
vi /etc/httpd/conf/httpd.conf
## 通过 /ServerName 搜索定位到 ServerName 这一行,添加:
ServerName server01:80
## :wq 保存退出
cat /etc/httpd/conf/httpd.conf | "^\s*[Ss]erver[Nn]ame"
## 过滤出:网卡中的<网关和DNS信息行>
env LANG=us nmcli connection show ens33 | grep -E "^IP4\.(GATEWAY|DNS)"
## 过滤出:httpd.conf配置文件中的<非注释行>
cat /etc/httpd/conf/httpd.conf | grep -vE "^\s*($|#)"
## 获取:网卡的IPv4地址
ip addr show ens33 | grep -o -P "(\d+\.?){4}/\d+"
## 获取:网卡的IPv6地址
ip addr show ens33 | grep -o -P "([0-9a-f]*:?){6}/64"贡献者
更新日志
2026/4/5 03:39
查看所有更新日志
fb8bc-更新为vuepress于