一、Perl 正则表达式简介
Perl 正则表达式(Perl Compatible Regular Expressions,PCRE)是一种强大而灵活的正则表达式语法,它由 Perl 编程语言中的正则表达式语法演变而来,在许多编程语言和工具中都得到了广泛应用。
Perl 正则表达式非常灵活,支持许多高级功能,例如零宽断言、回溯引用、嵌入代码等。它在文本处理、模式匹配和数据提取等方面非常强大。
二、Perl 常用规则和语法
元字符:
-
.
: 匹配任意单个字符,除了换行符。 -
^
: 匹配行首。 -
$
: 匹配行尾。 -
*
: 匹配前一个字符的零个或多个重复。 -
+
: 匹配前一个字符的一个或多个重复。 -
?
: 匹配前一个字符的零个或一个重复。 -
|
: 或运算符,匹配两个或多个模式中的任意一个。 -
[]
: 字符类,匹配括号内的任意单个字符。 -
()
:分组,用于捕获子模式。 -
{}
:指定重复次数的区间。
-
特殊字符:
-
\d
: 匹配数字字符。 -
\D
: 匹配非数字字符。 -
\w
: 匹配单词字符(字母、数字、下划线)。 -
\W
: 匹配非单词字符。 -
\s
: 匹配空白字符(空格、制表符、换行符等)。 -
\S
: 匹配非空白字符。
-
量词:
-
{n}
: 匹配前一个元素恰好 n 次。 -
{n,}
: 匹配前一个元素至少 n 次。 -
{n,m}
: 匹配前一个元素至少 n 次,最多 m 次。
-
修饰符:
-
i
: 不区分大小写。 -
m
: 多行模式,使^
和$
匹配行首和行尾。 -
s
: 单行模式,使.
匹配任意字符,包括换行符。 -
x
: 忽略空白和注释。
-
三、Perl 示例
grep 提取硬盘温度(整行)
#命令
sudo smartctl -a /dev/sda | grep Temperature_Celsius
#输出
194 Temperature_Celsius 0x0022 100 100 050 Old_age Always - 40
grep 提取硬盘温度(仅匹配部分)
#命令
sudo smartctl -a /dev/sda | grep Temperature_Celsius | grep -Po '\d{2}$'
#输出
40
本文共 419 个字数,平均阅读时长 ≈ 2分钟
评论 (0)