gpt4 book ai didi

php - 如果字符串后没有空格,正则表达式 OR 语句将无法工作

转载 作者:行者123 更新时间:2023-12-02 04:36:49 25 4
gpt4 key购买 nike

我试图让这个正则表达式匹配(一次或两次)这些字符串的任何出现:border-box|padding-box|content-box

这是正则表达式:

((?:border-box|padding-box|content-box){1,2})

这是示例字符串:

background: url("my image.jpg") left right 2px 50% 75% repeat-x round scroll border-box padding-box;

预期结果:

border-box padding-box

实际结果:

Array
(
[0] => border-box
[1] => border-box
)

哦,顺便说一句,我正在使用这个网站来测试我的正则表达式:http://www.phpliveregex.com/注意:我使用的是 preg_match 而不是 preg_match_all

最佳答案

解决方案使用 preg_match_all()

您正在尝试匹配多个值,因此请使用 preg_match_all()而不是 preg_match() :

$ok = preg_match_all('/(border-box|padding-box|content-box)/', $str, $matches);

if ($ok) {
$result = implode(' ', $matches[0]);
var_dump($result);
}

输出:

string(22) "border-box padding-box"

Demo

解决方案使用 preg_match()

您当前的正则表达式不起作用,因为它没有考虑空格。您可以按如下方式修改正则表达式。

((?:(?:border-box|padding-box|content-box)\s*){1,2})

解释:

  • (?:border-box|padding-box|content-box) - 非捕获组
  • \s* - 匹配任何空白字符(字符类 [\r\n\t\f ] 的简写)零次或多次
  • {1,2} - 匹配前一组 1 到 2 次

输出:

string(22) "border-box padding-box"

Demo

关于php - 如果字符串后没有空格,正则表达式 OR 语句将无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21802365/

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