Ruby正则表达式只以一个开始括号开头

时间:2018-03-14 07:38:31

标签: ruby regex

我正在寻找一个正则表达式,它检查一个只有一个开口大括号和任意数量的右括号的模式,所以:

"something{word_or_not}}}}}}}"  
#should return true.  

"something{{word_or_not}}}}}}}}"  
#should return false.  

这是我得到"\{\w*\}\}+"的距离,但不是那么远,因为这会为第二个例子返回true

3 个答案:

答案 0 :(得分:0)

这个正则表达式可能适合:

str1 = "{word_or_not}}}}}}}"
str2 = "{{word_or_not}}}}}}}}"

str1.match?(/\A\{[^{]*?\}+\z/) #=> true
str2.match?(/\A\{[^{]*?\}+\z/) #=> false

答案 1 :(得分:0)

Try这个正则表达式:

(?<!{){\w*}+

这使用负面的lookbehind声明在第一个{之前没有{

答案 2 :(得分:0)

有人可能会明确检查negative lookbehind

%w|{word_or_not}}}}}}} {{word_or_not}}}}}}}|.
  map(&/(?<!{){\w+}+/.method(:=~))
#⇒ [0, nil]