我在互联网上找到了很多例子,但仍然找不到解决办法。我得到了一个PHP页面,它需要解析一个HTML+JS页面,并且需要删除{}和方括号本身之间包含的所有内容。要点是括号的内容必须是A-Za-z0-9_,而不是其他任何内容(就像我到目前为止所做的那样)。
这是我目前的替代品:
$this->content = preg_replace("/\{((?:[^{}]++|\{(?1)\})++)\}/", "", $this->content);
到目前为止,这个功能非常好,重点是没有在括号之间搜索正确的内容并删除它们,不管里面是什么(atm,它正在从正在解析的页面的内容中删除JS函数)。
我需要修改什么来在reg的内容中添加这样的字符限制呢?
谢谢
发布于 2014-02-14 09:37:37
尝试使用以下模式:
\{[a-zA-Z0-9_]+?\}
最好在重复数结束时使用惰性量化和?
符号。
发布于 2014-02-14 09:36:02
匹配这些大括号子串的模式非常简单:
\{[a-zA-Z0-9_]+\}
它转义{
和}
,否则可能会被视为量词的一部分(例如{3}
)。注意,根据编程语言的不同,您可能必须双转义大括号(\\{[a-zA-Z0-9_]+\\}
),以便反斜杠本身被转义。
发布于 2014-02-14 09:45:45
A-Za-z0-9_
可以在regex中表示为\w
。
因此,如果括号中至少需要包含一个字符,那么regex将是
\{\w+\}
如果您认为可以有空的,例如{}
,那么您可以使用
\{\w*\}
如果您也希望允许空间,那么它将是
\{[\w\s]+\}
https://stackoverflow.com/questions/21775564
复制相似问题