gpt4 book ai didi

php - 尝试在 PHP 中创建匹配模式内模式的正则表达式

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

我见过一些正则表达式示例,其中字符串是“测试字符串:Group1Group2”,并使用 preg_match_all() 匹配标签内存在的文本模式。

但是,我想要做的有点不同,我的字符串是这样的:

“一些 t3xt../s8fo=123,sij(variable1=123,variable2=743,variable3=535)”

我想做的是匹配括号内存在的部分,例如“variable=123”。

我目前的情况是这样的:

if( preg_match_all("/\(([^\)]*?)\)"), $string_value, $matches )
{
print_r( $matches[1] );
}

但这只是捕获括号内的所有内容,不匹配任何其他内容。

编辑:所需的输出将是:

   "variable1=123"
"variable2=743"
"variable3=535"

我得到的输出是:

   "variable1=123,variable2=743,variable3=535"

最佳答案

如果匹配项不包含 (, ),您可以通过一次调用 preg_match_all 来提取所需的匹配项,:

$s = '"some t3xt../s8fo=123,sij(variable1=123,variable2=743,variable3=535)"';
if (preg_match_all('~(?:\G(?!\A),|\()\K[^,]+(?=[^()]*\))~', $s, $matches)) {
print_r($matches[0]);
}

参见 regex demo和一个 PHP demo .

详细信息:

  • (?:\G(?!\A),|\() - 前面成功匹配的结尾和逗号,或者 ( char
  • \K - 匹配重置运算符,丢弃当前匹配内存缓冲区中到目前为止匹配的所有文本
  • [^,]+ - 逗号以外的一个或多个字符(如果您也期望空匹配,请使用 [^,]*)
  • (?=[^()]*\)) - 需要零个或多个字符而不是 () 的积​​极前瞻> 然后是 ) 紧靠当前位置的右侧。

关于php - 尝试在 PHP 中创建匹配模式内模式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67642354/

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