正则表达式 - 如果存在匹配则捕获数字

时间:2010-07-27 19:22:21

标签: ruby-on-rails regex

我希望只捕获vspace之后的数字。你怎么会在正则表达式中这样做?这是一个示例字符串。

<img align="left" alt="dude its me" border="10" height="168" hspace="30"  vspace="10" width="130" />

所以最终结果是10

4 个答案:

答案 0 :(得分:2)

>> s = '<img align="left" alt="dude its me" border="10" height="168" hspace="30"  vspace="10" width="130" />'
>> /vspace="(\d+)"/.match(s)[1]
=> "10"

或者,如果您不确定它是否存在:

if /vspace="(\d+)"/ =~ s
  puts $1
else
  puts "no match"
end

答案 1 :(得分:2)

请记住,可以使用单引号,双引号或无引号指定vspace。

n = Nokogiri::HTML(%Q{<img align="left" alt="dude its me" border="10" height="168" hspace="30"  vspace="10" width="130" />})
n.css("img").first["vspace"]

Never ever parse HTML with regular expressions.

答案 2 :(得分:1)

仅捕获10尝试此一个:(?=\bvspace=")?(\d+)

/vspace="(\d+)"应与vspace="10"

的全部内容相匹配

答案 3 :(得分:0)

/vspace="(\d+)"/$1/