正则表达式语言嵌入在 Perl 中(反之亦然),但它不与 Perl 共享语法¹。这意味着重复或范围的其他语法。
1) 正则表达式与 Perl 字符串共享语法,虽然两者不完全兼容,但请参阅\b转义的不同含义。
字符类定义了一组多个属性。如果指定的属性之一匹配,则字符类将匹配。一个 charclass 可以包含:
- 单个字符,例如
[aeiou](匹配小写元音)
- 范围,以匹配代码点的连续范围:(
[A-Z]大写拉丁字符)
- 整个 charclass 的否定:(
[^']不是单引号的所有内容)
- 命名字符类,如
\d, \w(和 Unicode 属性很有趣)
- (POSIX 字符类)
如果一个 charclass 多次包含一个字符,这无关紧要,因为它的行为就像一个集合并集。
字符类中的元字符是
]: 比赛结束。要匹配方括号,必须使用[\[\]]or [][],因为 charclass不能为空。
^仅在前导位置特殊的否定运算符:[~&|^]将匹配任何按位逻辑 Perl 运算符。
- 范围运算符
-。要匹配文字减号,可以将其放在 charclass 的末尾:该类[+-*]将是无效的(*在之前+,因此该类是空的,这是非法的),但[+*-]可以正常工作
- 反斜杠仍然是转义字符。
字符类内部的空间很重要,即使在/x标志下也是如此。
在你的字符类上:
[1..9]也可以写成[19.], 并匹配1,9或., 因为句点不是字符类中的元字符。
[1 .. 9]可以写[19. ],并且另外匹配一个空格。正如我上面所说,空格在字符类中很重要。
你可能的意思是:
如果您想匹配任何数字0或1to 9,您可以使用 range [0-9]。请记住,减号是字符类中的范围运算符。