提取子串Ruby

时间:2013-09-25 17:22:43

标签: ruby-on-rails ruby regex

假设我有一个包含

的字符串
  

有些内容等等等等等等      一些更随机的内容
     ParentID:这里是重要的内容

我正在尝试在ruby中编写一个正则表达式,以解析此字符串中“ParentID:”的值,这就是我现在所拥有的,

def parseForParent(textForParsing)

  string1 = textForParsing.match(/ParentID:([^\/.]*)\n$/)

end

此问题现在似乎已得到解决,检查下面的答案,我正在尝试修改正则表达式,以便我可以限制实际与“ParentID”相关的文本。一种方法是将所有其他文本删除到分隔符之外,或者我可以将其合并到我的正则表达式中。

3 个答案:

答案 0 :(得分:1)

你必须做一些奇怪的事情因为它有效,尽管我在这里做了一些改变以使其更加Ruby样式:

def parse_for_parent(text)
  match = text.match(/ParentID:([^\/.]*?)\n$/)

  match and match[1]
end

text = <<END
Some content blah blah blah
Some more random content
ParentID: Here goes the important content
END

parse_for_parent(text)
# => " Here goes the important content"

作为一个注释,Ruby中的方法名称使用下划线定义。类名是大小写混合的。常数是全部的。

答案 1 :(得分:1)

这是如何使用str[regexp, capture]的?

text = <<END
Some content blah blah blah
Some more random content
ParentID: Here goes the important content
END

text[/ParentID:(?<match>.*)/,"match"]
# => " Here goes the important content"

答案 2 :(得分:0)

如果您正在处理的是BR HTML标记,则可以通过将输入中的BR标记替换为纯文本换行符,然后将其添加到parseForParent方法中来简化解析:

converted_text = text.gsub(/<br\s*\/?>/i, "\n")

这应该足够灵活,可以处理<BR><br/><br />

<强>更新

正如@tadman强调的那样,使用完整的HTML解析器(例如Nokogiri)处理解析通常更安全。 This thread也可能对你感兴趣。