使用Ruby中的regex在两个标签之间提取文本
假设我有这个包含html标签的字符串:
Berlin-Treptow-Köpenick
如何在ruby中使用正则表达式来提取“ Berlin-Treptow-Köpenick ”的文本?
谢谢! 🙂
你可以使用:
html = 'Berlin-Treptow-Köpenick' html.match(/>(.*))[1] #=> "Berlin-Treptow-Köpenick"
当你的html部分变得更加复杂时,我建议你去寻找像nokogiri这样的库 。
我假设要提取的字符串由字母数字字符组成 – 包括重音字母和连字符,并且字符串紧跟在字符'>'
的第一个实例之后。
string = 'Berlin-Treptow-Köpenick' 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:]]-]+/
string = 'Berlin-Treptow-Köpenick' string.scan(/<[a][^>]*>(.+?)<\/[a]>/).flatten