2014-01-30 38 views
2
s = "some {text|in|braces} found" 

要获得括号正面/负面和向前看/看在背后混乱?

s.scan(/(?<={).*(?=})/) #=> ["text|in|braces"] 

现在的内容得到不在括号中的内容,我想

s.scan(/(?<!{).*(?!})/) #=> ["some {text|in|braces} found", ""] 

显然我失去了一些东西很重要。

回答

2

你的第二个正则表达式寻找

  • 的任意字符串 “*”
  • 不是由之前 “{”
  • 后面没有用 “}”

当然匹配整个字符串,因为“some {text | in | braces}找到”既没有前面有“{”,也没有后面跟着“}”。

+0

那么什么是使用向前看/后面来获取不在括号中的内容的权利体现在哪里? – Bala

+1

定义“不是在大括号”。你想它返回“一些发现” ? –

0

不要忘记使用\特殊字符“)({}?”

你可以用2个操作解决这个首先你可以用这个表达式islotale您的参数:

s = s.gsub(/.*(\{.*\}) # => "text|in|braces" 
s.scan(/\w+/) # => ["text", "in", "braces"] 

s.gsub(/.*(\{.*\}).scan(/\w+/) # => ["text", "in", "braces"] 
相关问题