preg_match ("/[-_^%&().A-Z0-9]/", $file)
从它的外观来看,我可以看到尾端是Anything A-Z和0-9,但是一开始并不确定。因为^没有被转义所以它可以是文字“^”或评估为NOT,并且与“。”,“(”和“)”相同。所以我只是有点困惑。在可选[]中包含内容是否意味着事物已被字面化了?
答案 0 :(得分:3)
它只是查找字符类中的一个字符。即其中之一:
^
仅在类的最开始时被解释为否定字符类。 .
完全丧失了在角色类中的特殊含义。所以是的,在字符类中,字面上使用了许多特殊的正则表达式字符。除了例外情况,以下列表并非详尽无遗:
-
)表示两个其他字符之间的范围(即不在开头或结尾)。^
)。\w
),它将与该类中的字符形成联合。因此,您的角色类可以缩短为[-^%&().\w]
。答案 1 :(得分:2)
^
在[]
内仅具有特殊含义,如果它是第一个字符。
如果在两个文字字符之间,则-
在[]
内只有特殊含义。
.
,(
和)
在[]
内没有特殊含义。
只需阅读docs中的基本信息即可告诉您所有这些。
正则表达式只匹配类中的一个字符。