首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从字符串中移除花括号

从字符串中移除花括号
EN

Stack Overflow用户
提问于 2014-02-14 09:33:09
回答 3查看 4.9K关注 0票数 2

我在互联网上找到了很多例子,但仍然找不到解决办法。我得到了一个PHP页面,它需要解析一个HTML+JS页面,并且需要删除{}和方括号本身之间包含的所有内容。要点是括号的内容必须是A-Za-z0-9_,而不是其他任何内容(就像我到目前为止所做的那样)。

这是我目前的替代品:

代码语言:javascript
运行
复制
$this->content = preg_replace("/\{((?:[^{}]++|\{(?1)\})++)\}/", "", $this->content);

到目前为止,这个功能非常好,重点是没有在括号之间搜索正确的内容并删除它们,不管里面是什么(atm,它正在从正在解析的页面的内容中删除JS函数)。

我需要修改什么来在reg的内容中添加这样的字符限制呢?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-14 09:37:37

尝试使用以下模式:

代码语言:javascript
运行
复制
\{[a-zA-Z0-9_]+?\}

最好在重复数结束时使用惰性量化和?符号。

票数 3
EN

Stack Overflow用户

发布于 2014-02-14 09:36:02

匹配这些大括号子串的模式非常简单:

代码语言:javascript
运行
复制
\{[a-zA-Z0-9_]+\}

它转义{},否则可能会被视为量词的一部分(例如{3})。注意,根据编程语言的不同,您可能必须双转义大括号(\\{[a-zA-Z0-9_]+\\}),以便反斜杠本身被转义。

票数 1
EN

Stack Overflow用户

发布于 2014-02-14 09:45:45

A-Za-z0-9_可以在regex中表示为\w

因此,如果括号中至少需要包含一个字符,那么regex将是

代码语言:javascript
运行
复制
\{\w+\}

如果您认为可以有空的,例如{},那么您可以使用

代码语言:javascript
运行
复制
\{\w*\}

如果您也希望允许空间,那么它将是

代码语言:javascript
运行
复制
\{[\w\s]+\}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21775564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档