正则表达式为什么这两个不一样?

时间:2012-10-17 20:58:10

标签: regex grouping

[\w+\.]{3}

\w+\.\w+\.\w+\.

前者匹配“dra”

后来匹配“dragon.is.awesome”

我对他们的理解是什么?

输入文字看起来像

我知道dragon.is.awesome但是

我知道dragon.is.awesome。因为,他太棒了

我知道dragon.suck。因为,他不是很棒

我知道dragon.is.dead,有人杀了他

所以我需要匹配模式\ w +。

的任何分组组合

3 个答案:

答案 0 :(得分:3)

因为第一个是字符类。

[\w+/\.]

匹配一个\w,或一个+或一个/或一个文字.。如果要缩短后者,请使用正常的括号:

(\w+\.){3}

请注意,在字符类中,大多数元字符都会失去意义。因此,+.以及*(例如)都可以被包含和匹配,而不会被转义。

答案 1 :(得分:1)

[...]字符类。它匹配一个字符。 [\w+\.]匹配一个字符,该字符可以是“单词”字符(字母,数字或下划线),也可以是加号或点。 [\w+\.]{3}连续匹配三个这样的字符。

答案 2 :(得分:1)

[]是一个字符类,而不是子模式。 [abc]匹配单个a,b或c。

你可能意味着(\w+\.){3} 与第二个正则表达式相同。