我正在尝试在 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/