正则表达式简介
正则表达式是 Perl 编程的重要组成部分。它主要用于搜索指定的文本模式。在这种模式中,一组字符组合在一起构成了搜索字符串,这也被称为 regexp。
当我们学习正则表达式时,可能需要快速查阅那些不常使用的概念。为此,我们整理了一份正则表达式速查表,其中包含了正则表达式中使用的不同类别、字符、修饰符等内容。
#### 字符类
字符类用于匹配字符串中的特定字符集。这些类允许我们匹配任何范围的字符,甚至是那些我们无法预知的字符。
说明
—
仅包含指定的一个字符,即 ‘a‘、‘b‘、‘c‘ 或 ‘.‘
包含从 a 到 j 的所有字符。
包含从 a 到 z 的所有小写字符。
包含除 a 和 z 之外的所有字符。
包含所有字符,相当于 [a-z, A-Z, 0-9]
匹配数字,相当于 [0-9]
匹配字符 a 和 b 后面不能跟 c、d 或 e 的情况。
匹配 [\f\t
\r],即换页符、制表符、换行符和回车符。 |
\w 的补集(非单词字符)
\d 的补集(非数字)
\s 的补集(非空白符)示例:
# Perl 程序演示
# 字符类
# 实际字符串
$str = "45char";
# 如果在 $str 中找到匹配
# 使用 \w
if ($str =~ /[\w]/)
{
print "Match Found
";
}
# 如果在 $str 中未找到匹配
else
{
print "Match Not Found
";
}
输出:
Match Found
#### 锚点
锚点完全不匹配任何字符。相反,它们匹配的是特定的位置,例如字符之前、之后或之间。
说明
—
匹配字符串的开头。
匹配字符串的结尾。
匹配字符串中从 \w 到 \W 的单词边界。
匹配字符串的开头。
匹配字符串的结尾或换行符之前。
仅匹配字符串的结尾。
匹配 pos() 指定的位置。
Unicode 字符类,如 IsLower, IsAlpha 等。
Unicode 字符类的补集
POSIX 字符类,如 digit, lower, ascii 等。示例:
# Perl 程序演示
# 正则表达式中锚点的使用
# 实际字符串
$str = "55";
# 如果在 $str 中找到匹配
# 使用锚点 /
if ($str =~ /[[:alpha:]]/)
{
print "Match Found
";
}
# 如果在 $str 中未找到匹配
else
{
print "Match Not Found
";
}
输出:
Match Not Found
#### 元字符
元字符用于在 Perl 正则表达式中匹配模式。所有的元字符都必须被转义。
说明
—
检查字符串的开头。
检查字符串的结尾。
除换行符外的任何字符。
匹配 0 次或多次。
匹配 1 次或多次。
匹配 0 次或多次。
用于分组。
用于引用或特殊字符。
用于字符集。
用作重复修饰符。#### 量词
这些用于检查特殊字符。主要有三种类型的量词:
- ‘?‘ 匹配字符出现 0 次或 1 次。
- ‘+‘ 匹配字符出现 1 次或多次。
- ‘*‘ 匹配字符出现 0 次或多次。
说明
—
检查 ‘a‘ 出现 0 次或 1 次。
检查 ‘a‘ 出现 1 次或多次
检查 ‘a‘ 出现 0 次或多次
检查 ‘a‘ 出现 2 到 6 次
检查 ‘a‘ 出现 2 到无限次
检查 ‘a‘ 出现 2 次。示例:
# Perl 程序演示
# 正则表达式中量词的使用
# 实际字符串
$str = "color";
# 如果在 $str 中找到匹配
# 使用量词 ?
if ($str =~ /colou?r/)
{
print "Match Found
";
}
# 如果在 $str 中未找到匹配
else
{
print "Match Not Found
";
}
输出:
Match Found
#### 修饰符
说明
—
用于替换字符串的所有出现位置。
允许在 \g 匹配失败后继续搜索。
将字符串视为单行。
关闭大小写敏感性(匹配不区分大小写)。