草庐IT

模式匹配

全部标签

ruby - 在 Ruby 的情况下使用带正则表达式匹配的命名捕获……什么时候?

我想使用命名捕获来解析用户输入以提高可读性。当他们键入命令时,我想捕获一些参数并传递它们。我在case语句中使用RegExp,因此无法分配/pattern/.named_captures的返回值。这是我希望能够做的(例如):whilecommand!="quit"print"Command:"command=gets.chompcasecommandwhen/load(?\w+)/load(filename)endend 最佳答案 namedcaptures在此语法时设置局部变量。regex-literal=~string不要在其他

ruby - 用于类似正则表达式匹配的 xpath 表达式?

我想在具有特定模式的html文档中搜索divid。我想在正则表达式中匹配这个模式:foo_([[:digit:]]{1.8})使用xpath。上述模式的xpath等价物是什么?我坚持//div[@id="foo_然后什么?如果有人能为它继续一个合法的表达。编辑抱歉,我想我必须详细说明一下。其实不是foo_,它是post_message_顺便说一句,我使用mechanize/nokogiri(ruby​​)这是片段:html_doc=Nokogiri::HTML(open(myfile))message_div=html_doc.xpath('//div[substring(@id,13

ruby - Vim 和 Ruby - 匹配 "do"s 和 "end"s?

我相信我们都熟悉“意外的kEnd”问题。它们总是(对我来说)很难找到,因为Vim不匹配“do”和“end”。(显然,还有其他以“end”结尾的元素,例如“if”)有没有办法配置Vim来显示这些匹配项以帮助简化调试? 最佳答案 如果您使用的是最新的vim(我使用的是7.4),内置的matchit宏可以很好地处理ruby​​代码。只需将以下内容添加到您的.vimrc中即可启用它runtimemacros/matchit.vim点击%以匹配ruby​​文件中的do/end组合和许多其他组合。

ruby-on-rails - Rails 中的匹配和路由

我生成了一个Controller并更改了路由,但打开链接会在我的本地服务器上产生错误。生成Controller和路由railsgeneratecontrollerStaticPageshomeaboutteamcontact改变路线.rbMyApp::Application.routes.drawdorootto:'static_pages#home'match'/about',to:'static_pages#about'match'/team',to:'static_pages#team'match'/contact',to:'static_pages#contact'end根路径

ruby - 在 Ruby 中,如何删除字符串中的所有字符直到子字符串匹配?

假设我有一个字符串:嘿,怎么了@dude,@how'sitgoing?我想删除所有@how's之前的字符。 最佳答案 或使用正则表达式:str="Heywhat'sup@dude,@how'sitgoing?"str.gsub!(/.*?(?=@how)/im,"")#=>"@how'sitgoing?"您可以在here阅读有关环视的信息 关于ruby-在Ruby中,如何删除字符串中的所有字符直到子字符串匹配?,我们在StackOverflow上找到一个类似的问题:

ruby-on-rails - 具有存储库模式的 Ruby on Rails?

在使用ASP.NetMVC之后,我想到了Rails。我之前使用过Rails,但有点生疏。ASP.NetMVC教程建议使用存储库模式隐藏数据层实现。这允许更容易的单元测试依赖注入(inject),以及Controller与模型实现的良好解耦。我记得Rails的Controller直接使用ActiveRecord对象,单元测试使用可以轻松设置和拆除的测试数据库。这解决了换出单元测试的需要,但在Controller中暴露这么多ActiveRecord代码似乎仍然不是一个好主意。所以我的问题是,最新的最佳实践是什么?真实的(不是模拟的)数据库是否仍然用于单元测试?Rails开发人员是直接调用A

ruby - 使用递归正则表达式(如 perl)在 Ruby 中匹配平衡括号

我一直在寻找一种方法来匹配正则表达式中的平衡括号,并在Perl中找到了一种使用递归正则表达式的方法:my$re;$re=qr{\((?:(?>[^()]+)#Non-parenswithoutbacktracking|(??{$re})#Groupwithmatchingparens)*\)}x;来自perlregularexpressionsite.有没有办法用Ruby或类似的语言做到这一点?更新:对于那些感兴趣的人,这里有一些有趣的链接:Onigurumamanual-来自Sawa的回答。PragmaticProgrammers'Ruby1.9RegularExpressionsS

ruby-on-rails - 没有路由匹配... Rails 引擎

所以我不断收到错误:没有路由匹配{:action=>"create",:controller=>"xaaron/api_keys"}测试中抛出的是:it"shouldnotcreateanapikeyforthosenotloggedin"dopost:createexpect(response).toredirect_toxaaron.login_pathend当我转到spec/dummy并运行rakeroutes命令时,我看到:api_keysGET/api_keys(.:format)xaaron/api_keys#indexPOST/api_keys(.:format)xaar

ruby - 如何在数字数组中找到最佳匹配元素?

我需要一些看似简单但让我感到困惑的事情的帮助。尝试编写一些模糊匹配方法来处理根据需要计算的值与选择列表中实际可用的值之间的格式差异。值(value)(期权行使价)始终是计算得出的float,例如85.0或Int。该数组包含字符串形式的数字,不可预测的增量或它们是否会显示为某个小数(包括额外的零,如5.50)或无小数(如85),例如:select_list=["77.5","80","82.5","85","87.5","90","95","100","105"]我不确定如何编写简单的一行或两行代码来返回数组中出现的最接近的匹配元素(按数值)。例如,如果select_list.conta

ruby-on-rails - 如何将rails更改为开发模式

在rails(3.2.3)的文档中说Indevelopmentmode(whichiswhatyou’reworkinginbydefault),Railsreloadsyourapplicationwitheverybrowserrequest,sothere’snoneedtostopandrestartthewebserver.但显然我的应用程序在开箱即用的生产模式下加载。(我可以键入Rails.env并查看它)。为什么?然后我转到environment.rb并添加ENV["RAILS_ENV"]="development"它仍在生产中。任何的想法?编辑:给你#Loadthera