gpt4 book ai didi

php - 捕获没有条件结尾的字符串

转载 作者:行者123 更新时间:2023-12-04 05:17:08 29 4
gpt4 key购买 nike

我正在 try catch 包含条件结尾的 URL 的中间部分:

URL 可以有两种类型:

/a/b/(part/needed)
/a/b/(part/needed)/page/#

这是我使用的正则表达式:
preg_match('@/a/b/(.*)(/page/\d)?@i', '/a/b/some/text/page/1', $matches);

返回
0=>"/a/b/some/text/page/1",
1=>"some/text/page/1"

没关系,但它包括我不想要的条件结局!

有人能告诉我如何不包含以它结尾的条件字符串吗
但在最后一段存在或不存在时仍然匹配?

最佳答案

通过用 ^$ anchor 定表达式并使第一组不贪婪 (.*?) ,你可以得到你需要的段。 .*单独是一场贪婪的比赛,会吃掉.*后面的一切。 .

preg_match('@^/a/b/(.*?)(/page/\d)?$@i', '/a/b/some/text/page/1', $matches);
//-----------^-------^^^-----------^
print_r($matches);
Array
(
[0] => /a/b/some/text/page/1
[1] => some/text
[2] => /page/1
)

如果您不需要 /page/1 ,使其成为非捕获组 (?:...) .
preg_match('@^/a/b/(.*?)(?:/page/\d)?$@i', '/a/b/some/text/more/page/1', $matches);
//----------------------^^^
print_r($matches);
Array
(
[0] => /a/b/some/text/more/page/4
[1] => some/text/more
)

regular-expressions.info+ 有关字符重复的良好信息和 * ,以及贪婪的陷阱。

关于php - 捕获没有条件结尾的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14106923/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com