我正在尝试查找包含<或者>在{}之间。这是在HTML中,我很难让它成为“ungreedy”。
所以我想找到符合这些字符串的文字:
{test > 3}
{testing >= 3 : comment}
{example < 4}
我已经尝试了许多正则表达式,但所有这些都似乎继续结束}并且包括具有&lt;的HTML。或者&gt;。例如,我试过这个正则表达式
{.*?(<|>).*?}
但最终会匹配这样的文字:
{if true}<b>testing</b>{/if}
看起来非常简单,{}之间包含&lt;或&gt;。
答案 0 :(得分:4)
这应该可以解决问题:
{[^}]*(<|>).*}
答案 1 :(得分:1)
更高效的正则表达式(因为没有非贪婪的匹配):
'#{[^}<>]*[<>]+[^}]*}#'
第三个字符类中没有括号的原因是它匹配多个字符串的字符串&gt; (例如{foo <> bar}
...
答案 2 :(得分:0)
{[^}]*?(<|>)[^{]*?}
试试吧。请注意,我将.
替换为一个字符类,这意味着除了左/右花括号之外的所有内容。
答案 3 :(得分:0)
您是否尝试过使用Ungreedy(U)开关?