珀尔 |正则表达式中的特殊字符类
Perl 中实现了许多不同的字符类,其中一些被频繁使用,以至于为它们创建了一个特殊的序列。创建特殊序列的目的是使代码更具可读性和更短。 Perl 中的特殊字符类如下:
- 数字 \d[0-9] : \d用于匹配任何数字字符,它相当于 [0-9]。在正则表达式中/\d/将匹配一个数字。 \d被标准化为“数字”。主要优点是用户可以轻松地以较短的形式编写并轻松阅读。有两种方法可以使用这个特殊字符类。让我们举个例子来更好地理解如何字符串。
例子:
/#[MNOPQ]-\d\d\d/
上面给定的字符将字符串如下。
#M-12345 #N-66666
在这里,我们还可以通过将量词放在字符类上来使用量词。
例子:
/#[MNOPQ]-\d{5}/
上面给出的例子与前面的正则表达式相同,它允许在破折号后有任意数量的数字,它可以写成/#[MNOPQ]-\d+/ 。
第二种方法用于较大的字符类。 \d放在方括号中并匹配单个字符数字。
例子:
[\dABCDEFDEFGHIJKLMN]
可以匹配单个数字或匹配任何大写字母 A、B、C、D、E、F、G、H、I、J、K、L、M 或 N。它可以写成更短的形式使用破折号(-)。然后它会像:
[\dA-N]
- PO SIX字符类: PO SIX 是维护操作系统之间兼容性的标准,它定义了应用程序编程接口 (API),带有命令行 shell 和实用程序接口。它还指定了一些“字符组” ,其名称例如(alpha、alnum、ascii、blank 等)。 PO SIX字符类始终以[:class:]的形式存在,其中 class 是名称, [:和:]是分隔符。 POSIX字符类总是出现在括号内的字符类中。这些类是列出一组字符的一种方便且解释性的方式。
句法:
$string =~ /[[:class:]]/
这里的类可以是 alpha、alnum、ascii 等。
POSIX字符类支持更大的括号字符类,如下所示:
[01[:Class:]%]
在这里它将匹配“0”、“1”以及任何字符类和百分号。 Perl 提供对不同 PO SIX字符类的支持,如下表所示:
Class Description alpha Any alphabetical character (“[A-Za-z]”) alnum Any alphanumeric character (“[A-Za-z0-9]”). ascii Any character in the ASCII character set. blank A space or a horizontal tab cntrl Any control character. digit Any decimal digit (“[0-9]”). graph Any printable character, excluding a space lower Any lowercase character (“[a-z]”) punct Any graphical character space Any whitespace character upper Any uppercase character (“[A-Z]”) xdigit Any hexadecimal digit (“[0-9a-fA-F]”) word A Perl extension (“[A-Za-z0-9_]”), equivalent to “\w” - 字字符\w[0-9a-zA-Z_] : \w属于字字符类。 \w匹配任何单个字母数字字符,可以是字符字符、十进制数字或标点符号,例如下划线(_) 。它只会匹配单个字符的单词,而不是整个单词。如果要匹配整个单词,请使用\w+ 。
- 空格 \s[\t\n\f\r ] :字符类\s将匹配单个字符,即空格。它还将匹配 5 个字符,即\t -水平制表符、 \n-换行符、 \f-换页符、 \r-回车符和空格。在 Perl v5.18 中,要引入一个与\cK - 垂直制表符匹配的新字符。
- 否定字符类 \D、\W、\S :这个世界上有超过 110、000 个 Unicode字符可用。要否定一个字符类,只需使用caret(^)符号。它将否定符号甚至范围之后的指定字符。在否定字符类中,我们使用[^\d]来否定从 0 到 9 的数字。但是代替[^\d]我们可以简单地使用\D来否定从 0 到 9 的数字。下表说明了特殊的否定字符类:
Character Class Negated Meaning Description \d \D [^\d] matches any non-digit character \s \S [^\s] matches any non-whitespace character \w \W [^\w] matches any non-“word” character - Unicode字符类: Unicode 是“所有”现有字符的定义,Unicode 标准为每个字符提供了一个唯一编号,并且它与平台无关。这个世界上有超过 100, 000 个字符可用,每个字符被描述为一个字符点。但是有些字符是组合在一起的。
句法:
\p{...any character...}
此语法用于匹配其中一个组中的单个字符。如果您需要匹配除指定字符以外的任何内容,则可以使用相应的\P{...any 字符...}表达式。