s = "some {text|in|braces} found"
获取大括号之间的内容
s.scan(/(?<={).*(?=})/) #=> ["text|in|braces"]
现在要获取不在括号中的内容,我试过
s.scan(/(?<!{).*(?!})/) #=> ["some {text|in|braces} found", ""]
显然我错过了一些非常重要的事情。
答案 0 :(得分:2)
你的第二个正则表达式正在寻找
当然匹配整个字符串,因为“找到一些{text | in | braces}”既不是“{”,也不是“}”。
答案 1 :(得分:0)
不要忘记使用\“)(?{}”。
来逃避特殊字符你可以用2个操作来解决这个问题,首先你可以使用这个正则表达式来设置你的参数:
s = s.gsub(/.*(\{.*\}) # => "text|in|braces"
s.scan(/\w+/) # => ["text", "in", "braces"]
或
s.gsub(/.*(\{.*\}).scan(/\w+/) # => ["text", "in", "braces"]