2013-12-23 22 views
1

鑑於這種形式的字符串:正則表達式捕捉到谷歌網頁字體的權重和樣式

var myfont = 'Exo 2:600italic'; 

我需要一個正則表達式的冒號(600)爲var1的任何值之後捕捉到字符串的數字部分以下數值爲var2。

例如,從上面的字符串,我會得到:

font-weight:600 //var1 value 
font-style:italic //var2 value 

任何幫助,非常感謝。

回答

1

以下的正則表達式應該制定出適合你:

:(?<var1>\d+)(?<var2>\w+) 

此使用名爲組(即(?<var1>(?<var2>),所以返回的比賽,如果有的話,將通過關聯數組訪問(含var1var2作爲數組索引)。

使用PHP的preg_match()

$input = 'Exo 2:600italic'; 
$matches = array(); 
preg_match('/:(?<var1>\d+)(?<var2>\w+)/', $input, $matches); 

輸出:

print_r($matches); 
Array (
    [0] => :600italic 
    [var1] => 600 
    [1] => 600 
    [var2] => italic 
    [2] => italic 
) 

如果要直接訪問你以後的值,你可以使用:

$var1 = $matches['var1']; 
$var2 = $matches['var2']; 
+0

謝謝,但我不知道怎麼用你給我的myfont串什麼。我錯過了嗎?我只是使用var1和var2作爲佔位符來保存來自myfont字符串的重量和字體樣式值。 – RegEdit

+0

@RegEdit我已經更新了我的答案,並附有示例用例 – newfurniturey

+0

+1謝謝!我現在可以看到。 – RegEdit

1
$myfont = 'Exo 2:600italic'; 

if (preg_match('~:(\d+)(\w+)~', $myfont, $matches)) { 
    print_r($matches); 
} 

print_r($matches); 

輸出:

Array 
(
    [0] => :600italic 
    [1] => 600 
    [2] => italic 
) 

存儲所提取的值轉換爲新的變量,你會怎麼做:

$var1 = $matches[1]; 
$var2 = $matches[2]; 
+0

+1欣賞快速幫助。 – RegEdit

+0

@RegEdit:很高興有幫助:) –

+0

Amal,當輸入字符串是'Exo 2:700'時,[1]返回70 – RegEdit