php 正则匹配的内容不包含某个字符

我需要匹配字符中 以< >包含,但是里面不能包含 <的内容
比如:
客户您好,为您推荐以下项目:<项目2:项目名称<项目3:项目名称>>以及<项目1:项目名称>

我要匹配出 <项目3:项目名称> 和 <项目1:项目名称>

求高手解答

判断一个字符串中是否含有另一字符串,php有很多方法,如下:

1. 常见函数
strstr($str, "abc");

2. 正则匹配
preg_match("/(abc)/is", $str);

完整代码示例:
$str = "dfadfadf765577abc55fd";
$pattern_url = "/^((?!abc).)*$/is";
if (preg_match($pattern_url, $str))
{
echo "不含有abc!";
}
else
{
echo "含有abc!";
}

结果为:false,含有abc!
同时匹配,包含字符串 “abc”,而且不包含字符串 “xyz”的正则表达式:
preg_match("/(abc)[^((?!xyz).)*$]/is", $str);
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-06
eregi是被废弃的正则方法,模式[]中不支持转义,[\-]不是转义'-'而是匹配'\'和'-',建议你换用preg_match,用法:preg('/^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/',$mail),这样就行了
第2个回答  推荐于2018-02-28
<?php
$str = '客户您好,为您推荐以下项目:<项目2:项目名称<项目3:项目名称>>以及<项目1:项目名称>';
$search = '/<([^<]*?)>/is';
preg_match_all($search,$str,$r);
echo '<pre>';
print_r($r);
echo '</pre>';
?>本回答被提问者和网友采纳
相似回答