2013-12-19 34 views
0
<?php 

echo preg_replace('/(\* Version:[ ]+)([0-9\.]{6})/', '${1}' . '6.6.6' , ' * Version:   3.1.0'); 

我基本上想檢測與版本的行,並將其替換爲新版本。我不知道爲什麼它不工作PHP - 卡住這個正則表達式

+1

什麼測試數據?測試數據是第三個參數。 – redanimalwar

回答

2

此子表達式...

([0-9\.]{6}) 

...只會匹配,如果有確切目標字符。但3.1.0字符串中只有5個字符(3位數,兩個點)。

解決它最簡單的方法是更改​​子表達式...

([0-9.]{1,6}) 

...所以它會匹配高達 6個字符。我也在這裏刪除了前面的反斜槓:你不需要在字符類中轉義.符號(在這裏它沒有任何特殊的含義)。

+1

要匹配OP數據,它應該是'([0-9。] {5})'http://regex101.com/r/cD7qJ2。否則'([0-9。] {2,})'可能是個好主意。 –

+0

同意。實際上,爲了覆蓋適當的版本,像'[0-9] +(?:\。[0-9])*'看起來更合適。 – raina77ow

+0

洛爾坦克,我猜測我不好。 – redanimalwar