gpt4 book ai didi

php - preg_split 字符串不在单引号之间

转载 作者:可可西里 更新时间:2023-11-01 00:32:15 25 4
gpt4 key购买 nike

我正在尝试用空格而不是单引号之间的 pref_split 字符串。

这是我正在使用的字符串:

'physical memory %'=92%;99;100 'physical memory'=29.69GB;31.68;32;0;32

以下正则表达式模式成功匹配了我要分割的空间:

/\x20(?=[^']*('[^']*'[^']*)*$)\g

我遇到的问题是我使用 http://www.regexr.com/ 编写了这个字符串这是特定于 JavaScript 正则表达式的,我需要它才能在 PHP 中工作。

这是我目前的 PHP 代码,但它抛出了一个错误:

preg_split("/\x20(?=[^']*('[^']*'[^']*)*$)/g", "'physical memory %'=92%;99;100 'physical memory'=29.69GB;31.68;32;0;32");

错误:

preg_split(): Unknown modifier 'g'

如果我删除/和/g,我会收到以下错误:

preg_match_all(): Compilation failed: nothing to repeat at offset 0

我的猜测是,出于某种原因,PHP 中的正则表达式不匹配任何值,因此无法拆分字符串。有人可以帮助正确执行此操作吗?

谢谢。

最佳答案

从正则表达式中删除 g(全局)修饰符。

preg_split("/\x20(?=[^']*('[^']*'[^']*)*$)/", "'physical memory %'=92%;99;100 'physical memory'=29.69GB;31.68;32;0;32");

Working Demo

虽然您的正则表达式可以工作,但您可以使用以下内容,这样可以更轻松地忽略引号中的空格字符。

$results = preg_split("/'[^']*'(*SKIP)(*F)|\x20/", $str);
print_r($results);

解释:

想法是跳过单引号中的内容。我首先匹配引号后跟除 ' 之外的任何字符,然后是单引号,然后使子模式失败并强制正则表达式引擎不使用 ( *SKIP)(*F) 回溯控制动词。

输出

Array
(
[0] => 'physical memory %'=92%;99;100
[1] => 'physical memory'=29.69GB;31.68;32;0;32
)

关于php - preg_split 字符串不在单引号之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24558612/

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