我在互联网上找到了很多例子,但仍然无法找到解决方案。 我有一个需要解析HTML + JS页面的PHP页面,需要删除{}和括号本身之间的所有内容。 关键是括号的内容必须是[A-Za-z0-9_]而不是其他任何内容(就像我到目前为止所做的那样)。
这是我目前的替代品:
$this->content = preg_replace("/\{((?:[^{}]++|\{(?1)\})++)\}/", "", $this->content);
到目前为止,这个工作非常好,重点是不会在括号内搜索正确的内容并删除它们,无论内部是什么(atm它正在从正在解析的页面内容中删除JS函数)。
我要修改什么才能将这种字符限制添加到注册表的内容中?
由于
答案 0 :(得分:3)
尝试使用此模式:
\{[a-zA-Z0-9_]+?\}
最好在重复次数结束时使用?
符号进行延迟量化。
答案 1 :(得分:1)
匹配这些大括号子串的模式非常简单:
\{[a-zA-Z0-9_]+\}
它会转义{
和}
,否则可能会将其视为量词的一部分(例如{3}
)。请注意,根据编程语言的不同,您可能需要双重转义大括号(\\{[a-zA-Z0-9_]+\\}
),以便对反斜杠本身进行转义。
答案 2 :(得分:1)
A-Za-z0-9_
可以在正则表达式中表示为\w
。
因此,如果你的括号内部至少需要包含一个字符,那么正则表达式将是
\{\w+\}
如果您认为可以为空,例如{}
,则可以使用
\{\w*\}
如果你想允许空间,那么它将是
\{[\w\s]+\}