Ruby正则表达式中提取信息的优雅方法
我的问题很简单,这是一句话:Ruby正则表达式中提取信息的优雅方法,ruby,regex,Ruby,Regex,我的问题很简单,这是一句话: <title><* page.title *></title> 我想得到“页面标题”部分。我可以通过以下方法实现: replacement = line.match(/\<\* .* \*\>/) replacement_contain = replacement.to_s.match(/ .* /).to_s.strip replacement=line.match(/\/) repla
<title><* page.title *></title>
我想得到“页面标题”部分。我可以通过以下方法实现:
replacement = line.match(/\<\* .* \*\>/)
replacement_contain = replacement.to_s.match(/ .* /).to_s.strip
replacement=line.match(/\/)
replacement_contain=replacement.to_.match(/.*/).to_.strip
有什么捷径或更好的方法可以做到这一点吗?“[/(?“page.title”
" <title><* page.title *></title> "[/(?<=\*).*(?=\*)/].strip #=> "page.title"
“”[/(?“页面.标题”
一种方法是使用捕获组:
str = "<title><* page.title *></title>"
str[/\*\s+(.*)\s+\*/,1]
#=> "page.title"
\1
是由提取并返回的捕获组#1的内容。一种方法是使用捕获组:
str = "<title><* page.title *></title>"
str[/\*\s+(.*)\s+\*/,1]
#=> "page.title"
\1
是由提取并返回的捕获组#1的内容
“如何用正则表达式解析HTML”的答案是
例如,@sawa和@Cary的解决方案,如果您知道HTML将包含什么内容,那么是可以的,但是如果您的页面中有*>
任何其他地方,则会失败,这是完全有效的HTML。请改用像Nokogiri这样的HTML解析器(如上所示)
“如何用正则表达式解析HTML”的答案是
例如,@sawa和@Cary的解决方案,如果您知道HTML将包含什么内容,那么是可以的,但是如果您的页面中有
*>
任何其他地方,则会失败,这是完全有效的HTML。请改用像Nokogiri这样的HTML解析器(如上所示).如果你不熟悉诺科吉里,你应该花点时间来学习它。我听说这很简单。@Cary,谢谢你给我留下了诺科吉里的印象,我不知道我为什么不使用它。如果你不熟悉诺科吉里,你应该花点时间来学习它。我听说这很简单。@Cary,谢谢我不知道我为什么不使用它。
require 'nokogiri'
require 'open-uri'
html = Nokogiri.HTML open('https://stackoverflow.com/questions/27879967/elegant-way-to-extarct-information-ruby-regex')
puts html.css('title').text
# => "Elegant way to extarct information ruby regex - Stack Overflow"