-1
$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吗?

4

3 回答 3

1
$outside = preg_replace('#~[^~]*~#', '', $newpair);

这将返回一个字符串,该字符串由配对的 tildas 之外的所有内容组成。

于 2013-06-10T02:39:06.877 回答
0

您可以通过积极的后视找到最后~一个,然后继续捕获所有不是 a 的内容,~直到您到达字符串的末尾$

(?<=~)[^~]+$

像这样使用它:

$newpair = '~I love~~you~ notes';
preg_match_all ('/(?<=~)[^~]+$/' , $newpair, $np);
var_dump( $np[0][0]);

打印

string(6) " notes"
于 2013-06-10T02:41:16.513 回答
0

你可以试试这个:

$subject = '~I love~~you~ notes';
$pattern = '/~\K[^~]++(?=~)/';

preg_match_all ($pattern, $subject, $matches);

print_r($matches);

$result = implode(' ', $matches[0]);

echo $result;

请注意,对于模式,我选择检查~匹配后是否有前瞻(?=...),但如果这不是必要条件,您可以将其删除。

重置模式的\K开始。

于 2013-06-10T03:02:05.593 回答