Perl 正则表达式速查表

正则表达式简介

正则表达式是 Perl 编程的重要组成部分。它主要用于搜索指定的文本模式。在这种模式中,一组字符组合在一起构成了搜索字符串,这也被称为 regexp

当我们学习正则表达式时,可能需要快速查阅那些不常使用的概念。为此,我们整理了一份正则表达式速查表,其中包含了正则表达式中使用的不同类别、字符、修饰符等内容。

#### 字符类

字符类用于匹配字符串中的特定字符集。这些类允许我们匹配任何范围的字符,甚至是那些我们无法预知的字符。

说明

[abc.]

仅包含指定的一个字符,即 ‘a‘、‘b‘、‘c‘ 或 ‘.‘

[a-j]

包含从 a 到 j 的所有字符。

[a-z]

包含从 a 到 z 的所有小写字符。

[^az]

包含除 a 和 z 之外的所有字符。

\w

包含所有字符,相当于 [a-z, A-Z, 0-9]

\d

匹配数字,相当于 [0-9]

[ab][^cde]

匹配字符 a 和 b 后面不能跟 c、d 或 e 的情况。

\s

匹配 [\f\t

\r],即换页符、制表符、换行符和回车符。 |

\W

\w 的补集(非单词字符)

\D

\d 的补集(非数字)

\S

\s 的补集(非空白符)示例:

# Perl 程序演示
# 字符类
  
# 实际字符串
$str = "45char";
  
# 如果在 $str 中找到匹配
# 使用 \w
if ($str =~ /[\w]/)
{
    print "Match Found
";
}
  
# 如果在 $str 中未找到匹配
else
{
    print "Match Not Found
";
}

输出:

Match Found

#### 锚点

锚点完全不匹配任何字符。相反,它们匹配的是特定的位置,例如字符之前、之后或之间。

锚点

说明

^

匹配字符串的开头。

$

匹配字符串的结尾。

\b

匹配字符串中从 \w 到 \W 的单词边界。

\A

匹配字符串的开头。

\Z

匹配字符串的结尾或换行符之前。

\z

仅匹配字符串的结尾。

\G

匹配 pos() 指定的位置。

\p{….}

Unicode 字符类,如 IsLower, IsAlpha 等。

\P{….}

Unicode 字符类的补集

[:class:]

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?

检查 ‘a‘ 出现 0 次或 1 次。

a+

检查 ‘a‘ 出现 1 次或多次

a*

检查 ‘a‘ 出现 0 次或多次

a{2, 6}

检查 ‘a‘ 出现 2 到 6 次

a{2, }

检查 ‘a‘ 出现 2 到无限次

a{2}

检查 ‘a‘ 出现 2 次。示例:

# Perl 程序演示
# 正则表达式中量词的使用
  
# 实际字符串
$str = "color";
  
# 如果在 $str 中找到匹配
# 使用量词 ?
if ($str =~ /colou?r/)
{
    print "Match Found
";
}
  
# 如果在 $str 中未找到匹配
else
{
    print "Match Not Found
";
}

输出:

Match Found

#### 修饰符

修饰符

说明

\g

用于替换字符串的所有出现位置。

\gc

允许在 \g 匹配失败后继续搜索。

\s

将字符串视为单行。

i

关闭大小写敏感性(匹配不区分大小写)。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/43457.html
点赞
0.00 平均评分 (0% 分数) - 0