我真的无法想出这个。
我有一个字符串,我试图匹配标有开括号和右括号的三个组(例如{content}
),我在双括号下面的自定义字符串意味着它被转义。
SetValue:{1} when {OVERVIEW{{}}.Debug=1} else {0}
// Here is an actual real life example
ValidWhen: {! Matches('^\\d{{3}}\\s\\d{{3}}\\s\\d{{3}}[\\s\\S]', COLLECTION.AccountNumber)} {Account Number must not be more than 9 numbers.}
我无法弄清楚正则表达式匹配第二组{OVERVIEW{{}}.Debug=1}
而不是{OVERVIEW{{
我最接近使用此正则表达式,因为我认为我可以使用lookbehind防止它停在双支撑上。
/{(?!\}).*?\}/
这甚至可能吗?或者我需要更精细的字符串解析吗?
答案 0 :(得分:3)
以下正则表达式适用于有效输入 1 :
/{(?:[^{}]|{{|}})*}/
我们只是禁止任何{}
内部大括号,并且只允许加倍{{
和}}
。
1 以上是上面的正则表达式可能会返回意外结果的一些输入:
{{0}} text
此正则表达式将匹配{0}
,这很可能不正确。
{{ OVER}
未打开的大括号,很可能是无效的代码。
{ A {B } C}
嵌套大括号 - 不确定这是否有效,但上面的正则表达式会抓取{B }
。
答案 1 :(得分:1)