使用Ruby中的regex在两个标签之间提取文本

时间:2015-11-29 21:15:36

标签: ruby regex

假设我有一个包含html标签的字符串:

<a href="abgeordnete-1128-0----w8397.html" class="small_link">Berlin-Treptow-Köpenick</a>

如何在ruby中使用正则表达式来提取“ Berlin-Treptow-Köpenick”的文本?

谢谢! :)

3 个答案:

答案 0 :(得分:2)

您可以使用:

html = '<a href="abgeordnete-1128-0----w8397.html" class="small_link">Berlin-Treptow-Köpenick</a>'
html.match(/>(.*)</)[1]
#=> "Berlin-Treptow-Köpenick"

当你的html部分变得更复杂时,我建议你去查看像nokogiri这样的库。

答案 1 :(得分:2)

我假设要提取的字符串由字母数字字符组成 - 包括重音字母和连字符,并且字符串紧跟字符'>'的第一个实例。

string =
'<a href="abgeordnete-1128-0----w8397.html" class="small_link">Berlin-Treptow-Köpenick</a>'

r = /
    (?<=\>)       # match '>' in a positive lookbehind
    [\p{Alnum}-]+ # match >= 0 alphameric character and hyphens
    /x            # extended or free-spacing mode

string[r] #=> "Berlin-Treptow-Köpenick"

请注意,/A-Za-z0-9/与重音字符不匹配,例如'ö'

或者,可以使用POSIX语法:

r = /(?<=\>)[[[:alnum:]]-]+/

答案 2 :(得分:1)

string = '<a href="abgeordnete-1128-0----w8397.html" class="small_link">Berlin-Treptow-Köpenick</a>'

string.scan(/<[a][^>]*>(.+?)<\/[a]>/).flatten