繁体   English   中英

PHP正则表达式-获取^之间的值

[英]PHP Regex - get values between ^

无法解决这个问题。

我有绳子

^c1_e^,^d_e^,^c^

得到^^之间的值的正则表达式是什么?

我试过了

preg_match("/(?<=^).*?(?=^)/", $string, $match);

这不起作用

您需要逃脱插入符号。 默认情况下,这些表示正则表达式中的“行的开头”:

preg_match('/(?<=\^).*?(?=\^)/', $string, $match);

以上将获得,为好,但也只是第一场比赛。 如果要避免逗号并获得所有匹配项,则需要匹配^并使用捕获组:

preg_match_all('/\^([^^]+)\^/', $string, $match);

包含^之间的部分的数组将在数组$match[1]

非正则表达式解决方案(尽管健壮性稍差一些,因为它无法使用^abc,def^, ^abc^等格式的字符串,应在其中给出abc,defabc )将首先拆分,然后删除^

$theString = '^c1_e^,^d_e^,^c^';
$elements = explode(',', $theString);
for ($i = 0; $i < sizeof($elements); $i++) {
    $elements[$i] = trim($elements[$i], "^");
}
print_r($elements);

您也可以使用此~\\^(.*?)\\^~

<?php
$str="^c1_e^,^d_e^,^c^";
preg_match_all("~\^(.*?)\^~", $str,$match);
echo "<pre>";
print_r($match[1]);

OUTPUT :

Array
(
    [0] => c1_e
    [1] => d_e
    [2] => c
)

enter image description here

一个更简单的解决方案:

<?php
$string = '^c1_e^,^d_e^,^c^';
preg_match_all('/([^^,]+)/', $string, $matches);
$strings = $matches[1];
print_r($strings); //prints an array with the elements from $string
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM