Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式排除大括号内的单词_Regex_Ruby - Fatal编程技术网

Regex 正则表达式排除大括号内的单词

Regex 正则表达式排除大括号内的单词,regex,ruby,Regex,Ruby,我有一个变量{data.something} 每次“某物”的值都不一样 我想要一个匹配大括号+数据的正则表达式,这样我就可以很容易地访问“某物” 这听起来很容易,但我不能让它工作 我用这个去弄卷发背带里的东西,但我现在被卡住了 \{{(.*?)\}} 如果我这样做: matched_data = /\{{(.*?)\}}/.match("{{data.something}}") 我最终得到了 matched_data = "data.somethin

我有一个变量{data.something}

每次“某物”的值都不一样

我想要一个匹配大括号+数据的正则表达式,这样我就可以很容易地访问“某物”

这听起来很容易,但我不能让它工作

我用这个去弄卷发背带里的东西,但我现在被卡住了

   \{{(.*?)\}}
如果我这样做:

matched_data = /\{{(.*?)\}}/.match("{{data.something}}") 
我最终得到了

  matched_data = "data.something".
我想要的是以“某样东西”结束


非常感谢

如果包含
数据。
在捕获组之外的表达式中,捕获的值将是“某物”。这就是你想要的吗

matched\u data=/\{{{data\.(.+)\}}/.match({{data.something}})
将匹配的_数据[1]#=>放入“某物”

一般来说,忽略点之前的任何内容,您可以使用非捕获组(以“
?:
”开始组):

将打印

bar

此外,在这种情况下,您不需要避开大括号,因为它们不遵循模式。

如果我理解了您的问题,您需要在正则表达式中进行分组,然后访问该组

方法
Regexp\match
返回一个对象

您可以通过返回的MatchData对象访问正则表达式中指定的组

matched_data=/{{(.+)\(.+)?}}/.match({{data.something}})
放置匹配的_数据[1]=“数据”
#真的
放置匹配的_数据[2]=“某物”
#真的

您能更具体一点吗?A可以帮你得到一个更好的答案。好吧,对不起,这个问题对我来说很清楚。。。我会试着编辑它。
matched_data=“{{data.something}}”[/\{data\.(.*?\}}}/]
对你有用吗?太棒了,效果非常好!!上面和下面的解决方案返回了几乎正确的结果,但不完全正确(花括号出现了一些奇怪的情况),在这种情况下,请您将答案标记为已接受?
bar