如何修正preg_match正则表达式以移除多余点号?
正则表达式修正方案
原字符串:/myhome/ishere/where/are.you.ha
原正则问题:使用preg_match('/(.+\/)[^.]+(.+\.ha)/', $input_line, $output_array)处理后,结果多了一个多余的点号,得到/myhome/ishere/where/.you.ha,目标是得到/myhome/ishere/where/you.ha。
修正后的正则:
preg_match('/(.+\/)[^.]+\.(.+\.ha)/', $input_line, $output_array);
修正说明:
原正则里的(.+\.ha)会匹配到are.后面的.you.ha,导致拼接后多了一个前置点。修正后把[^.]+后面的.单独匹配出来,让第二个捕获组从you开始,最终拼接第一个捕获组(/myhome/ishere/where/)和第二个捕获组(you.ha),就能得到预期结果。
内容的提问来源于stack exchange,提问作者be MrZulf
相关产品推荐
相关产品推荐

