我正在寻找以下字符串(或字符串 - 可能会有很多次出现):
<!--##
和##-->
示例:从输入<!--##HELLO##-->
我需要匹配HELLO
。
什么是正则表达式?
答案 0 :(得分:5)
(?<=<!--##).*?(?=##-->)
Lookaround是仅匹配HELLO
的唯一方法。您还可以匹配整个<!--##HELLO##-->
并提取其他答案中提到的捕获的组。
答案 1 :(得分:1)
正则表达式
<!--##(.*?)##-->
将文本存储在第一组中。一定要设置允许的选项。匹配换行符(/ s下面)
对于php preg,这变为
if (preg_match('/<!--##(.*?)##-->/s', $subject, $regs)) {
$result = $regs[1];
} else {
$result = "";
}
答案 2 :(得分:0)
/<!--##(.*?)##-->/
基本上这是对其他提供的答案执行此操作的另一种方法,因为我认为使用匹配组来删除文本比使用前瞻/后方仅匹配您要查找的内容更简单。番茄,Tom-ah-to。
答案 3 :(得分: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";
}