-1

我正在寻找以下字符串(或字符串 - 可能出现很多次):

<!--####-->

示例:从<!--##HELLO##-->我需要匹配的输入中HELLO

什么是正则表达式?

4

4 回答 4

5
(?<=<!--##).*?(?=##-->)

Lookaround 是仅匹配HELLO. 如其他答案中所述,您还可以匹配整个<!--##HELLO##-->并提取捕获的组。

于 2012-05-28T23:16:04.630 回答
1

正则表达式

<!--##(.*?)##-->

将文本存储在第一组中。请务必设置允许 . 匹配换行符(/s 下面)

对于 php preg 这变成

if (preg_match('/<!--##(.*?)##-->/s', $subject, $regs)) {
    $result = $regs[1];
} else {
    $result = "";
}
于 2012-05-28T23:22:33.297 回答
0
/<!--##(.*?)##-->/

基本上,这是对其他提供的答案执行此操作的另一种方法,因为我认为使用匹配组来找出您的文本比使用向前/向后仅匹配您正在寻找的内容更简单。番茄,汤姆啊。

于 2012-05-28T23:21:22.973 回答
0

这是一个使用 的版本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";
}
于 2014-06-07T22:41:03.113 回答