2010-07-27 53 views
1

我期望捕獲vspace之後的數字。你如何在正則表達式中做到這一點?這是一個示例字符串。正則表達式 - 如果存在匹配,則捕獲一個數字

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

因此,最終結果將是10

+1

OT:有趣的你提供了這麼多的屬性,但你沒有提到'src'。 :) – 2010-07-27 19:33:05

+3

沒有src的在這個例子的製作中受到傷害:) – Trip 2010-07-27 19:44:00

回答

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 
+2

使用遵循Ruby約定的s.match(/.../)比從Perl繼承的/.../ =〜s更具可讀性,對於那些不熟悉的用戶來說,看起來更像是線噪聲這是什麼意思。 – tadman 2010-07-27 20:36:34

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

嗯。最後一塊與$ 1。不知道我明白這一點。 – Trip 2010-07-27 19:27:38

+0

$ 1內容括號之間的內容即10與您的示例。我不知道RoR正則表達式,但我認爲有類似的東西。 – Toto 2010-07-27 19:37:39

+0

爲什麼downvote? – Toto 2010-07-27 19:43:14

1

爲了捕捉只是10試試這個:(?=\bvspace=")?(\d+)

/vspace="(\d+)"應匹配整個vspace="10"

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.

相關問題