Unescape一个逃脱的字符串

时间:2014-11-09 09:12:09

标签: ruby regex

我有一个像

这样的字符串
 rule = ".radio-inline,\n.checkbox-inline {\n  display: inline-block;\n}"

该字符串包含\n等特殊字符。如何在{}之前返回字符串的一部分?
对于上面的字符串,它应该返回".radio-inline,\n.checkbox-inline "
我试着用

写它
Regexp.escape(rule).match(/(.*){/)[1]

问题是它返回:

"\\.radio\\-inline,\\n\\.checkbox\\-inline\\ \\" 

2 个答案:

答案 0 :(得分:1)

这应该这样做:

rule = ".radio-inline,\n.checkbox-inline {\n  display: inline-block;\n}"

rule[/.*(?={)/m]
  #=> ".radio-inline,\n.checkbox-inline "
  • .*匹配行开头的零个或多个字符。默认情况下,它是贪婪的,它匹配尽可能多的字符。

  • (?={),一个积极的前瞻,要求角色{立即跟随匹配的字符串,但它不是匹配的一部分。

  • m规定匹配将在多行上进行。

  • 这使用方法String#[]的形式,将正则表达式作为参数。

答案 1 :(得分:0)

这个正则表达式让你在{}之前获得了部分:

[^"{}]+(?={.*})

试试这个demo

然而,它并没有在结束时开始选择",我希望这对您有用