我想获取被一些自定义“括号”包围的文本,即:{{...}}或@(...)@
当括号只有一个字符长度(即:{..})时,它是:
/{(.*?)}/g
并且有一个更有效的解决方案,使用“not-end-bracket”模式:
/{([^}]*)}/g
但是对于两个特征括号,只有这个有效
/{{(.*?)}}/g
我找不到像单字符案例那样有效的解决方案。
有没有?
答案 0 :(得分:3)
我假设您不需要担心嵌套。如果你这样做,你就不应该使用正则表达式。
这是一种在不使用非贪婪匹配(*?
)的情况下执行所需操作的方法:
/{{([^}]|}[^}])*}}/g
英文:
这通过n个单独的分支来概括为n个花括号,一个用于非卷曲,一个用于卷曲和非卷曲,一个用于两个卷曲,一个用于非卷曲等。
在你的特殊情况下你可以写:
/{{(}?[^}])*}}/g
BTW:该组可能不需要捕获。例如:
/{{(?:}?[^}])*}}/g
答案 1 :(得分:1)
假设您有{{...}}
var subject= "{{i am legend}}";
var pattern = /(?:{{)([\w\W]*)(?:}})/;
var text= subject.match(pattern)[1];
您可能需要包含转义,具体取决于您选择的“括号”