.*
和[.]*
之间的确切区别是什么?
我尝试将它们放在括号中进行反向引用,并发现结果并不相同,虽然我不明白为什么会这样。
.
应该匹配任何单个字符。
所以我想,无论是否在方括号内,使用*
(匹配零个或多个)运算符都不应该有影响。但事实并非如此。为什么呢?
.*
和[.]*
之间的确切区别是什么?
我尝试将它们放在括号中进行反向引用,并发现结果并不相同,虽然我不明白为什么会这样。
.
应该匹配任何单个字符。
所以我想,无论是否在方括号内,使用*
(匹配零个或多个)运算符都不应该有影响。但事实并非如此。为什么呢?
.*
中,“.”是一个特殊字符,匹配除换行符以外的任何字符(如果指定了DOTALL修饰符,则会匹配所有字符)。在一个字符类([.]
)中,“.”失去了它的特殊含义,开始匹配一个字面上的句点。.
)或空格(\s
)字符?例如,在多行正则表达式中,1([.\s]*)2
如何捕获 1 和 2 之间的组? - user144921
和2
之间的0个或多个点或空格。如果你想匹配在1
和2
之间的任何文本,你需要参考如何在正则表达式中跨多行匹配任何字符?,并使用(?s)1(.*)2
/ (?s)1(.*?)2
或者 1([\w\W]*)2
/ 1([\w\W]*?)2
。在JavaScript中也可能有其他选项,例如1([^]*)2
/ 1([^]*?)2
。 - Wiktor Stribiżew.
)和特定字符(\t
)的正确形式是什么。因为当你把点(.
)放在拾取组(方括号)中,例如[.\t]+
,它的意思并不相同?因为目前我必须用[\t.]+ === [\ta-zA-Z0-9]
替换方括号中的所有点。 - user14492\s
不是空格字符,它是一个空格字符模式,并且可以匹配所有的空格字符。不知道你的意思。如果需要帮助,请提供一个测试用例。 - Wiktor Stribiżew.
可匹配除换行符以外的任何字符。\.
仅匹配字面上的"."
。[.]
相当于[\.]
或\.
。这只是为了方便-因为在字符组的上下文中,您几乎肯定不希望它匹配"任何字符"。奖励--如果您使用我的Ruby gem,您可以轻松尝试这样的东西:
/./.examples # => ["a", "b", "c", "d", "e"]
/\./.examples # => ["."]
/[.]/.examples # => ["."]