0

假设我有一个字符串,其中包含,

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

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

def parseForParent(textForParsing)

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

end

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

4

3 回答 3

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 中的方法名称是用下划线定义的。类名大小写混合。常量是全大写的。

于 2013-09-25T17:36:22.310 回答
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"
于 2013-09-25T17:46:43.913 回答
0

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

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

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

更新:

正如@tadman 强调的那样,使用成熟的 HTML 解析器(例如Nokogiri)来处理解析通常更安全。您可能也对这个线程感兴趣。

于 2013-09-25T18:40:07.177 回答