【发布时间】:2023-03-04 16:42:02
【问题描述】:
我试图在/dir1/dir2/dir3/dir4/../dir7/dir8/dir9/target-.a-word1-word2-alphanumberic1-alphanumberic2.md 的字符串中查看/target- 的存在。
$re = '/^(.*?)(\/target-)(.*?)(\.md)$/i';
$str = '/dir1/dir2/dir3/dir4/../dir7/dir8/dir9/target-.a-word1-word2-alphanumberic1-alphanumberic2.md';
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);
// Print the entire match result
var_dump($matches);
演示:https://regex101.com/r/Saxk8x/1
我使用preg_match 或preg_match_all 还是有更快或更简单的方法?
即使 Demo 功能正常,preg_match 或 preg_match_all 都返回 null。
【问题讨论】:
-
你试过
stripos()吗? -
听起来这个问题更适合代码审查。
-
您在正则表达式中使用捕获组,就好像您需要捕获路径、目标和文件名一样。那是对的吗?
target是静态的还是Target和其他变体?
标签: php regex string preg-match preg-match-all