2011-11-12 195 views
4

我需要在更長的字母數字數據字符串中識別子字符串「X.123」和/或「X.8」。例如:使用RegEx從字母數字字符串中提取數字

A cow flew over the moon in the X.123 module, not the X.124.3 module, 
and certainly not the X.125C78 module. The cow poo-pooed the X.8 module. 

我該如何排除第二和第三個實例?這是我想出迄今獲得「X.123」部分:

/[X][\.][0-9]{1,4}/ 

我不完全知道如何使表達停止在任何非數字字符(例如:X124C78 )

幫助非常感謝!

+2

+1的飛牛;) – Beat

回答

4

\ b在這種背景不錯,我會用這樣的:

/\bX\.\d{1,4}\b/ 
+0

這很好,謝謝。 –

2

試試這個:

/X\.[0-9]{1,4}(?=\s|$)/ 
1

我會用這個。在開始的\b有助於避免比賽如AX.123

/\bX\.\d+(?=\s|$)/ 

preg_match_all('/\bX\.\d+(?=\s|$)/', $subject, $result, PREG_PATTERN_ORDER); 
for ($i = 0; $i < count($result[0]); $i++) { 
    # Matched text = $result[0][$i]; 
} 
+0

無法讓這個工作。 –

+0

@acoder您正在使用哪種正則表達式引擎? – FailedDev

+0

這是一個PHP腳本。 –