ruby-on-rails - 如何将这两个 Ruby 字符串测试结合到一个正则表达式中?

标签 ruby-on-rails ruby regex string ruby-on-rails-4

我正在尝试在 Ruby 中编写一个正则表达式,我想在其中查看字符串是否包含某个单词(例如“string”),后跟括号中的 url 和链接名称。

现在我在做:

string.include?("string") && string.scan(/\(([^\)]+)\)/).present?

我在两个条件中的输入都是一个字符串。在第一个中,我检查它是否包含“链接”一词,然后我将在括号中包含链接和 link_name,如下所示:

"Please go to link( url link_name)"

验证后,我提取 HTML 链接。

有没有一种方法可以使用正则表达式将它们组合起来?

最佳答案

您可以做出的最重要的改进是同时测试单词和括号之间的关系是否正确。如果我理解正确,"link(url link_name)" 应该匹配但是 "(url link_name)link""link stuff (url link_name)" 不应该。所以匹配 “link”、括号和它们的内容,并一次性捕获内容:

"stuff link(url link_name) more stuff".match(/link\((\S+?) (\S+?)\)/)&.captures
=> ["url", "link_name"]

( &. is Ruby 2.3 ;在旧版本中使用 Rails 的 .try :captures。)

旁注:string.scan(regex).present? 更简洁地写为 string =~ regex

关于ruby-on-rails - 如何将这两个 Ruby 字符串测试结合到一个正则表达式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37170738/

相关文章:

ruby-on-rails - Rails,如何测试缺少参数的 400 响应

ruby-on-rails - Ruby on Rails 重复列名 : user_id: ALTER TABLE "articles" ADD "user_id" integer

ruby-on-rails - 使用 link_to 方法将变量发送到 Controller rails 3

c++ - 按原样保存用户输入-Ruby on Rails

ruby-on-rails - delayed_job 通过 drb 服务器与 acts_as_ferret 对话导致关闭流错误

Vim 中的 Ruby 重构

regex - 防止危险的正则表达式停止应用程序

c# - 使用联合从 RSS 提要获取图像?

javascript - 允许在 javascript 中使用带有西类牙语正则表达式的字母数字吗?

ruby-on-rails - Docker Postgres Ruby on Rails 无法连接