我已经明白.*
表示零个或多个任何角色,但是
有人可以解释.*
在以下工作中的表现以及它会匹配的内容吗?
.*([a-m/]*).*
.*([a-m/]+).*
.*?([a-m/]*).*
答案 0 :(得分:14)
点意味着任何东西都可以到达这里,而星星意味着至少0次
所以.*
接受任何字符序列,包括空字符串。
答案 1 :(得分:8)
。示例中。*的功能是确保包含的表达式可以包含任何内容(或任何内容)。圆点表示任意字符,星号表示前面的字符可以重复任意次数(或根本不重复)。
答案 2 :(得分:8)
每个案例都不同:
<强> .*([a-m/]*).*
强>
第一个.*
可能会匹配整个字符串,因为[a-m/]
不需要出现,第一个*
是贪婪的,并且是第一个。
<强> .*([a-m/]+).*
强>
第一个.*
将匹配整个字符串,直到匹配[a-m/]
的最后一个字符,因为只需要一个,而第一个*
是贪婪的,并且是第一个。
<强> .*?([a-m/]*).*
强>
第一个.*?
会将字符串与匹配[a-m/]
的第一个字符匹配,因为*?
并非贪婪,然后[a-m/]+
将尽其所能,因为+
是贪婪的,然后最后一个.*
将与字符串的其余部分匹配。
答案 3 :(得分:7)
。*表示“任何字符,任意数量的重复。”