📜  珀尔 |正则表达式中的特殊字符类

📅  最后修改于: 2022-05-13 01:55:48.655000             🧑  作者: Mango

珀尔 |正则表达式中的特殊字符类

Perl 中实现了许多不同的字符类,其中一些被频繁使用,以至于为它们创建了一个特殊的序列。创建特殊序列的目的是使代码更具可读性和更短。 Perl 中的特殊字符类如下:

  1. 数字 \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]
    

  2. 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字符类的支持,如下表所示:

    ClassDescription
    alphaAny alphabetical character (“[A-Za-z]”)
    alnumAny alphanumeric character (“[A-Za-z0-9]”).
    asciiAny character in the ASCII character set.
    blankA space or a horizontal tab
    cntrlAny control character.
    digitAny decimal digit (“[0-9]”).
    graphAny printable character, excluding a space
    lowerAny lowercase character (“[a-z]”)
    punctAny graphical character
    spaceAny whitespace character
    upperAny uppercase character (“[A-Z]”)
    xdigitAny hexadecimal digit (“[0-9a-fA-F]”)
    wordA Perl extension (“[A-Za-z0-9_]”), equivalent to “\w”

  3. 字字符\w[0-9a-zA-Z_]\w属于字字符类。 \w匹配任何单个字母数字字符,可以是字符字符、十进制数字或标点符号,例如下划线(_) 。它只会匹配单个字符的单词,而不是整个单词。如果要匹配整个单词,请使用\w+

  4. 空格 \s[\t\n\f\r ] :字符类\s将匹配单个字符,即空格。它还将匹配 5 个字符,即\t -水平制表符\n-换行符\f-换页符、 \r-回车符空格。在 Perl v5.18 中,要引入一个与\cK - 垂直制表符匹配的新字符。

  5. 否定字符类 \D、\W、\S :这个世界上有超过 110、000 个 Unicode字符可用。要否定一个字符类,只需使用caret(^)符号。它将否定符号甚至范围之后的指定字符。在否定字符类中,我们使用[^\d]来否定从 0 到 9 的数字。但是代替[^\d]我们可以简单地使用\D来否定从 0 到 9 的数字。下表说明了特殊的否定字符类:
    Character ClassNegatedMeaningDescription
    \d\D[^\d]matches any non-digit character
    \s\S[^\s]matches any non-whitespace character
    \w\W[^\w]matches any non-“word” character

  6. Unicode字符类: Unicode 是“所有”现有字符的定义,Unicode 标准为每个字符提供了一个唯一编号,并且它与平台无关。这个世界上有超过 100, 000 个字符可用,每个字符被描述为一个字符点。但是有些字符是组合在一起的。

    句法:

    \p{...any character...}
    

    此语法用于匹配其中一个组中的单个字符。如果您需要匹配除指定字符以外的任何内容,则可以使用相应的\P{...any 字符...}表达式。