我期望捕獲vspace
之後的數字。你如何在正則表達式中做到這一點?這是一個示例字符串。正則表達式 - 如果存在匹配,則捕獲一個數字
<img align="left" alt="dude its me" border="10" height="168" hspace="30" vspace="10" width="130" />
因此,最終結果將是10
我期望捕獲vspace
之後的數字。你如何在正則表達式中做到這一點?這是一個示例字符串。正則表達式 - 如果存在匹配,則捕獲一個數字
<img align="left" alt="dude its me" border="10" height="168" hspace="30" vspace="10" width="130" />
因此,最終結果將是10
>> 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
使用遵循Ruby約定的s.match(/.../)比從Perl繼承的/.../ =〜s更具可讀性,對於那些不熟悉的用戶來說,看起來更像是線噪聲這是什麼意思。 – tadman 2010-07-27 20:36:34
爲了捕捉只是10
試試這個:(?=\bvspace=")?(\d+)
/vspace="(\d+)"
應匹配整個vspace="10"
請記住,可以用單引號,雙引號或不帶引號指定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"]
OT:有趣的你提供了這麼多的屬性,但你沒有提到'src'。 :) – 2010-07-27 19:33:05
沒有src的在這個例子的製作中受到傷害:) – Trip 2010-07-27 19:44:00