[英]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,def
和abc
)将首先拆分,然后删除^
:
$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
)
一个更简单的解决方案:
<?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.