可能很简单,但我做不到。 我有两个文件名字符串: wrap.html 包裹-popup.html
我尝试选择两种
/.*wrap.*\.htm.*/ mask
但它只匹配第一个“wrap.html”。
如果我使用/.*wrap.+\.htm.*/
,它只匹配第二个“wrap-popup.html”
我认为*听到0到无限字符。 选择两个字符串的正确掩码是什么???
答案 0 :(得分:0)
考虑字符串“这是带有2个html页面的文本:wrap.html和wrap-popup.html”
第一个正则表达式/.*wrap.*\.htm.*/
将匹配整个字符串。
因此,如果您不想包含字符串的第一部分,则需要删除第一部分。*
现在/wrap.*\.htm.*/
将匹配字符串中的“wrap.html and wrap-popup.html”。
那是因为第一个。*是一个贪婪的比赛。
所以,当我们将正则表达式更改为/wrap.*?\.html?/
。*?现在是一个懒惰的比赛。 l?
是可选的l
。因此正则表达式将返回“wrap.html”。
但是如果我们想要检索两者,我们需要全局搜索,否则它只会找到第一个匹配。
带有正则表达式/wrap[\w\-]*?\.html?/
的preg_match_all(而不是preg_match)将匹配“wrap.html”和“wrap-popup.html”。
你的第二个正则表达式与wrap.html不匹配,因为.+
预期“匹配”和点之间至少有1个字符。