2014-11-17 46 views
0

我有崇高的文字或phpstorm。正則表達式 - 獲取匹配的索引

我想通過正則表達式來改變這個字符串替換:

Hello world 

<span class="word1">Hello</span> 
<span class="word2">world</span> 

怎麼辦呢?

我的代碼:

(\w+) 

的是什麼,而不是$指數?

<span class="word$index">$1</span> 
+0

我想你應該通過一個否定模式分裂和周圍你想要的文字(這樣你可以有多個字,而不是兩個)放。 –

+1

只能通過正則表達式,你不能像這樣做 $ 1''。 –

回答

0

正則表達式:

^(\w+) (\w+)$ 

替換字符串:

<span class="word1">$1</span>\n<span class="word2">$2</span> 

DEMO

+0

我懷疑最初的問題是關於這個特定的案例,但如果是的話,這是一個很好的解決方案。 –

0

試試這個

$re = "/\\w+/m"; 
    $str = "Hello world Hello2 world2"; 

    preg_match_all($re, $str, $matches); 
    var_dump($matches); 
    $out=""; 
    if(count($matches[0])>0) foreach($matches[0] as $k=>$v){ 
     $id=$k+1; 
     $out .= "<span class=\"word$id\">$v</span>\n"; 
    } 
var_dump($out); 

輸出:

array (size=1) 
    0 => 
    array (size=4) 
     0 => string 'Hello' (length=5) 
     1 => string 'world' (length=5) 
     2 => string 'Hello2' (length=6) 
     3 => string 'world2' (length=6) 

string '<span class="word1">Hello</span> 
<span class="word2">world</span> 
<span class="word3">Hello2</span> 
<span class="word4">world2</span> 
' (length=134)