Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Ruby 正则表达式匹配所有步骤并获取双引号_Ruby_Regex_Cucumber - Fatal编程技术网

Ruby 正则表达式匹配所有步骤并获取双引号

Ruby 正则表达式匹配所有步骤并获取双引号,ruby,regex,cucumber,Ruby,Regex,Cucumber,作为一些背景,我试图编写一个通用的步骤,它将匹配以下步骤 When I "click" on "send" button When I "press" on that "clear" thingy When I "select" some kind of "money" maker 把引号里的东西给我 最佳情况下,该步骤将类似于 When(/regex here/) do |action, target| #do something here end 我已经尝试了(.*)(.*)(.*

作为一些背景,我试图编写一个通用的步骤,它将匹配以下步骤

When I "click" on "send" button
When I "press" on that "clear" thingy
When I "select" some kind of "money" maker
把引号里的东西给我

最佳情况下,该步骤将类似于

When(/regex here/) do |action, target|
   #do something here
end
我已经尝试了
(.*)(.*)(.*)(.*)(.*)(.*)(.*)
,它确实有效,但需要我编写以下步骤

When(/(.*)"(.*)"(.*)"(.*)"(.*)/) do |unused, action, unused, target, unused|
   #do something here
end
另一个副作用是.feature文件中的整个步骤都会高亮显示,这是次要的,但如果能够准确地知道正在抓取的是什么,也就是双引号中的内容,那就更好了

要实现此目标,正则表达式是什么?

尝试使用
[^”]
匹配除
字符以外的任何字符,并仅指定要捕获的组。例如:

When(/"([^"]*)"[^"]*"([^"]*)"/) do |action, target|
   #do something here
end

如果您有一个字符串,那么您可以使用scan方法来获取与regexp/“(.*)?”/的所有匹配项。这是否会迫使我首先使用一个(.*)表达式,它将完全匹配每个步骤?scan方法会查找每一个匹配项,而不仅仅是第一个。首先,我不会尝试创建一个执行如此多操作的巨型步骤。第二,我不会描述步骤中的方法。而不是“我点击发送按钮”、“我发送消息”或“我提交订单”。原因是我想识别行为,而不是实现行为的技术。我同意,但高层管理层希望步骤也是要求,这意味着了解应用程序本身在较低级别上的工作方式。谢谢,这是可行的。同样,这是次要的,但我似乎已经失去了语法突出显示。另外,如果我要添加第三个引用项,正则表达式将如何查找该项?我的猜测是/“([^”]*)”[^”]*“([^”]*)“[^”]*”([^”]*)/@AlejandroHuerta你可能想包括一个最后的
。例如,
”([^”]*)“[^”]*([^”]*)“[^”]*”([^”]*)“[^”]*([^”]*)”/