gpt4 book ai didi

Ruby:案例陈述中的正则表达式

转载 作者:数据小太阳 更新时间:2023-10-29 07:29:24 24 4
gpt4 key购买 nike

我是 Ruby 新手。我想弄清楚如何编写嵌套的 case 语句。这是我正在尝试做的一个例子:

# cucumber, webrat paths.rb

def path_to(page_name)

case page_name

when /the "?(.*)"? event registration homepage/ then
case $1
when '2011 CIO GL Global' then '/event/index/id/236'
when '2011 CIO IS Chicago' then '/event/index/id/275'
when '2011 CIO ES Denver' then '/event/index/id/217'
when '2011 CIO ES Vancouver, BC' then '/event/index/id/234'
else
raise "Can't find mapping for \"#{$1}\" to a path.\n" +
"Now, go and add a mapping in #{__FILE__}"
end

when /the contact match verification page/
'/attendee/user-verification'
end
end

在我的功能文件中它说:

When I go to the "2011 CIO IS Chicago" event registration homepage

这一步失败了,因为它引发了上面提到的异常,即使我在上面的 case 语句中定义了它。我做错了什么?

最佳答案

是的,第二个问号混淆了正则表达式。

表达式:

.*b?

可以用两种方式匹配字符串“axb”,要么用 .* 匹配整个字符串,要么用 .* 匹配 'ax' 和 'b?'匹配'b'。正则表达式算法是“贪婪的”——它更愿意尽可能早地匹配。

我将正则表达式重写为:

    when /the "?([^"]*)"? event registration homepage/ then

确保 $1 没有以任何双引号结尾...

关于Ruby:案例陈述中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com