我仍在从事我的reg exp。对我来说这有点复杂。
我想匹配一个< should have a partner >
中的字符串,但要匹配此< should be followed by >
中的>< should fail
的字符串,因为< >
应该是<<>>
可接受的模式< / p>
preg_match('/[^\w<>]/', $string)
演示:link
我能想到的是<
应该或应该有伙伴>
更新:
我用它来删除与伴侣的字符串:
function replacewhole($string){
$string = str_replace("<>","",$string);
if(preg_match_all("/<>/", $string)){
self::replacewhole($string);
}
return $string;
}
致电:
for($i = 0; $i < count($expressions); $i++){
$expressions[$i] = self::replacewhole($expressions[$i]);
}
但是只删除内部字符串匹配项
答案 0 :(得分:3)
如果要匹配任何<nested <stuff>>
,请尝试将preg_match_all
与recursion
/<(?>[^><]*(?R)?)*+>/
(?R)
重复完整模式-See this demo and explanation at regex101
要检查所有字符串都不包含任何字符或仅包含平衡的<>
,请尝试preg_match
/^(<(?>[^><]*(?1)?)*>|[^><]+)++$/
中模式的Another demo at regex101