如何使用正则表达式在ruby中查找子字符串之后

时间:2016-06-17 09:12:16

标签: ruby regex string url substring

我有一个字符串https://stackverflow.com。我想要一个新的字符串,其中包含使用正则表达式从给定字符串://之后的内容。

示例:

x="https://stackverflow.com"
newstring="stackoverflow.com"

示例2:

x="https://www.stackverflow.com"
newstring="www.stackoverflow.com"

请给我正则表达式代码。

3 个答案:

答案 0 :(得分:3)

"https://stackverflow.com"[/(?<=:\/\/).*/]
#⇒ "stackverflow.com"

(?<=..)positive lookbehind

答案 1 :(得分:1)

如果"parameters": { "ids": { "name": "ids", "in": "query", "description": "A list of IDs (separated by pipes) to filter the Returns", "required": false, "type": "array", "items": { "type": "integer", "format": "int32" }, "collectionFormat": "pipes" } }

一个非常简单的方法是string = "http://stackoverflow.com"。但这不是正则表达式。

正则表达式解决方案如下:

string.split("http://")[1]

解释:

  1. string.scan(/^http:\/\/(.+)$/).flatten.first 返回正则表达式的第一个匹配项。
  2. 正则表达式:
    • String#scan匹配行的开头
    • ^匹配这些字符
    • http:匹配\/\/
    • //设置&#34;匹配组&#34;包含任意数量的任何字符。这是扫描返回的值。
    • (.+)匹配行尾
  3. $.flatten.first中提取结果,在这种情况下返回嵌套数组。

答案 2 :(得分:1)

您可能想尝试一下:

#!/usr/bin/env ruby

str = "https://stackoverflow.com"

if mtch = str.match(/(?::\/\/)(/S)/)
  f1 = mtch.captures
end

match方法中有两个捕获组:第一个是指向您的搜索模式的非捕获组,第二个是指之后的所有其他捕获组。之后,captures方法会将所需结果分配给f1

我希望这能解决你的问题。