the*_*ter 3 php regex preg-split
我试图用不在单引号之间的空格pref_split一个字符串.
这是我正在使用的字符串:
'physical memory %'=92%;99;100 'physical memory'=29.69GB;31.68;32;0;32
Run Code Online (Sandbox Code Playgroud)
以下正则表达式模式成功匹配我要拆分的空间:
/\x20(?=[^']*('[^']*'[^']*)*$)\g
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我使用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");
Run Code Online (Sandbox Code Playgroud)
错误:
preg_split(): Unknown modifier 'g'
Run Code Online (Sandbox Code Playgroud)
如果我删除/和/ g我收到以下错误:
preg_match_all(): Compilation failed: nothing to repeat at offset 0
Run Code Online (Sandbox Code Playgroud)
我的猜测是,由于某种原因,PHP中的正则表达式不匹配任何值,因此无法拆分字符串.有人可以帮忙解决这个问题吗?
谢谢.
g从正则表达式中删除(全局)修饰符.
preg_split("/\x20(?=[^']*('[^']*'[^']*)*$)/", "'physical memory %'=92%;99;100 'physical memory'=29.69GB;31.68;32;0;32");
Run Code Online (Sandbox Code Playgroud)
虽然您的正则表达式可以使用,但您可以使用以下内容,这样可以更容易忽略引号中的空格字符.
$results = preg_split("/'[^']*'(*SKIP)(*F)|\x20/", $str);
print_r($results);
Run Code Online (Sandbox Code Playgroud)
说明:
我们的想法是跳过单引号中的内容.我首先匹配引号后跟任何字符',然后是单引号,然后使子模式失败并强制正则表达式引擎不使用另一个带有(*SKIP)和(*F)回溯控制谓词的替代方法重试子字符串.
产量
Array
(
[0] => 'physical memory %'=92%;99;100
[1] => 'physical memory'=29.69GB;31.68;32;0;32
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
924 次 |
| 最近记录: |