regexp点与方括号或不

时间:2016-05-12 16:33:36

标签: regex

.*[.]*之间的确切区别是什么?

我试图把它们放在括号内,用于反向引用,看到结果不一样,虽然我不明白为什么。

.应匹配任何单个字符。

所以我猜它是否在方括号内是不应该对*(匹配零或更多)运算符很重要。但它是。为什么呢?

2 个答案:

答案 0 :(得分:7)

.*中,点是一个特殊字符,匹配任何字符但是换行符(如果指定DOTALL修饰符,它将匹配所有字符)。在字符类([.])中,点失去其特殊含义并开始匹配文字点。

这是所有正则表达式的普遍行为。

答案 1 :(得分:1)

    除了换行符之外,
  • .匹配任何字符。
  • \.仅匹配文字"."
  • [.]相当于[\.]\.这只是为了方便 - 因为您几乎肯定不希望它在角色的上下文中匹配“任何字符”基。

奖金 - 如果你使用my ruby gem,你可以轻松地尝试这样的事情:

/./.examples # => ["a", "b", "c", "d", "e"]
/\./.examples # => ["."]
/[.]/.examples # => ["."]