如何。*(点星)有效吗?

时间:2012-10-01 02:06:26

标签: regex

我已经明白.*表示零个或多个任何角色,但是 有人可以解释.*在以下工作中的表现以及它会匹配的内容吗?

.*([a-m/]*).*

.*([a-m/]+).*

.*?([a-m/]*).*

4 个答案:

答案 0 :(得分:14)

点意味着任何东西都可以到达这里,而星星意味着至少0次 所以.*接受任何字符序列,包括空字符串。

答案 1 :(得分:8)

。示例中。*的功能是确保包含的表达式可以包含任何内容(或任何内容)。圆点表示任意字符,星号表示前面的字符可以重复任意次数(或根本不重复)。

答案 2 :(得分:8)

每个案例都不同:

<强> .*([a-m/]*).*

第一个.*可能会匹配整个字符串,因为[a-m/]不需要出现,第一个*是贪婪的,并且是第一个。

<强> .*([a-m/]+).*

第一个.*将匹配整个字符串,直到匹配[a-m/]的最后一个字符,因为只需要一个,而第一个*是贪婪的,并且是第一个。

<强> .*?([a-m/]*).*

第一个.*?会将字符串与匹配[a-m/]的第一个字符匹配,因为*?并非贪婪,然后[a-m/]+将尽其所能,因为+是贪婪的,然后最后一个.*将与字符串的其余部分匹配。

答案 3 :(得分:7)

。*表示“任何字符,任意数量的重复。”