$newpair = '~I love~~you~ notes';
preg_match_all ('^\~(.*?)\~^' , $newpair, $np);
foreach($np[1] as $key ){
print_r($np[1]);
echo $key .'<br/>';
}
echo $np; //result: I love you
在preg_match之上回显~
你能帮忙创建一个表达式来回显外部文本notes
吗?
答案 0 :(得分:1)
$outside = preg_replace('#~[^~]*~#', '', $newpair);
这将返回一个字符串,该字符串由配对的tildas之外的所有内容组成。
答案 1 :(得分:0)
您可以找到具有正向背后的最后~
,然后继续捕获不是~
的所有内容,直到您使用$
到达字符串的末尾:
(?<=~)[^~]+$
像这样使用它:
$newpair = '~I love~~you~ notes';
preg_match_all ('/(?<=~)[^~]+$/' , $newpair, $np);
var_dump( $np[0][0]);
string(6) " notes"
答案 2 :(得分:0)
你可以试试这个:
$subject = '~I love~~you~ notes';
$pattern = '/~\K[^~]++(?=~)/';
preg_match_all ($pattern, $subject, $matches);
print_r($matches);
$result = implode(' ', $matches[0]);
echo $result;
请注意,对于模式,我选择在与前瞻~
匹配后检查是否有(?=...)
,但如果这不是必要条件,则可以将其删除。
\K
重置模式的开头。