假设我有一个包含
的字符串有些内容等等等等等等 一些更随机的内容
ParentID:这里是重要的内容
我正在尝试在ruby中编写一个正则表达式,以解析此字符串中“ParentID:”的值,这就是我现在所拥有的,
def parseForParent(textForParsing)
string1 = textForParsing.match(/ParentID:([^\/.]*)\n$/)
end
此问题现在似乎已得到解决,检查下面的答案,我正在尝试修改正则表达式,以便我可以限制实际与“ParentID”相关的文本。一种方法是将所有其他文本删除到分隔符之外,或者我可以将其合并到我的正则表达式中。
答案 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也可能对你感兴趣。