我正在寻找以下字符串(或字符串 - 可能出现很多次):
<!--##
和##-->
示例:从<!--##HELLO##-->
我需要匹配的输入中HELLO
。
什么是正则表达式?
(?<=<!--##).*?(?=##-->)
Lookaround 是仅匹配HELLO
. 如其他答案中所述,您还可以匹配整个<!--##HELLO##-->
并提取捕获的组。
正则表达式
<!--##(.*?)##-->
将文本存储在第一组中。请务必设置允许 . 匹配换行符(/s 下面)
对于 php preg 这变成
if (preg_match('/<!--##(.*?)##-->/s', $subject, $regs)) {
$result = $regs[1];
} else {
$result = "";
}
/<!--##(.*?)##-->/
基本上,这是对其他提供的答案执行此操作的另一种方法,因为我认为使用匹配组来找出您的文本比使用向前/向后仅匹配您正在寻找的内容更简单。番茄,汤姆啊。
这是一个使用 的版本preg_match_all
,以及一个为您提供每个匹配项的迭代器:
$match_list = array();
if( preg_match_all('/<!--##(.*?)##-->/s', $subject, $regs) ) {
$match_list = $regs[1];
} else {
echo "Warning: No matches found in: " . $subject;
}
foreach($match_list as $i=>$v) {
echo "Match: " . $i . " : " . $v . "\n";
}