首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式搜索双大括号文本或双括号

使用正则表达式搜索双大括号文本或双括号
EN

Stack Overflow用户
提问于 2018-12-09 09:03:11
回答 3查看 79关注 0票数 4

我需要选择在双括号和双大括号之间的字符串中的值​​,但是允许使用非双大括号和括号。

对于双大括号,我使用了下面的表达式,但是如果它在字符串中有一个大括号,它就坏了。只有用双大括号才能打破这种情况,但我不知道如何生成正则表达式。

代码语言:javascript
复制
/{{([^}]*)}}/g

代码语言:javascript
复制
/\({2}([^)]*)\){2}/g

我试过在这里添加双支撑,但它不起作用:

代码语言:javascript
复制
/{{([^}}]*)}}/g
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-09 09:05:17

因为您希望允许在内部使用单个大括号,所以不应该使用负号字符集--而是从左边的分隔符开始,然后懒惰地重复任何字符,直到到达正确的分隔符为止。例如:

代码语言:javascript
复制
/{{(.*?)}}/

代码语言:javascript
复制
const pattern = /{{(.*?)}}/g;
const str = 'foo{{bar}} foo{{baz}} foo{{with}bracket}}';
console.log(str.match(pattern));

票数 5
EN

Stack Overflow用户

发布于 2018-12-09 09:14:05

我想你漏掉了括号里的反斜杠。

也许像/\{\{([^)]+)\}\}/这样的东西会起作用

示例:

console.log("{{TEST}}".match(/\{\{([^)]+)\}\}/)[1]);

console.log("{{TE{{}}ST}}".match(/\{\{([^)]+)\}\}/)[1]);

希望这有帮助

票数 1
EN

Stack Overflow用户

发布于 2018-12-09 09:32:29

“确定性表现”说的是正确的。我只想为括号和大括号添加一个表达式,正如您所问的那样。

**您可以对括号和大括号进行此操作**

代码语言:javascript
复制
((?:{{)(.*?}}))|((?:\(\()(.*?\)\)))

演示

代码语言:javascript
复制
const regex = /((?:{{)(.*?}}))|((?:\(\()(.*?\)\)))/gm;
const str = `foo{{bar}} foo{{baz}} foo{{with}bracket}}

foo((hello))


test{{test))

{{test))
{{test}}
((test))
test))
`;
let m;

let op = str.match(regex);
console.log(op);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53690784

复制
相关文章

相似问题

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