正则表达式语言嵌入在 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
或1
to 9
,您可以使用 range [0-9]
。请记住,减号是字符类中的范围运算符。