2011-11-12 25 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. 

2番目と3番目のインスタンスはどのように除外しますか?

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

私は任意の数字以外の文字(EXで表現停止をする方法を正確にはわからない:これは私が「X.123」の部分を取得するために、これまでに作ってみたものですX124C78 )

大変助かりました!

+2

+1;) – Beat

答えて

4

としてマッチを避けることができます、私はこのようにそれを使用します。飛んで牛のための

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

これはうまくいきました。 –

2

はこれを試してみてください:

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

私はこれを使用します。スタートで\b\ 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スクリプトです。 –

関連する問題