2012-03-16 6 views
1

データの一部をクリーンアップしようとしています。文字列の先頭にN桁、残りの一部にN桁があります。その最初のN桁だけを抽出する必要があります。 ^(\d+):ここ正規表現を使って文字列から最初のN桁を抽出します

は、例えば、文字列

1410{{data}} est un program56me de lв556Ђ™ 
122 datadatadata5654df sdfs989 
123datadatadata5654df sdfs989 

だ私は、これはトリックを行う必要があります

1410,122,123 
+0

単語境界の後に表示される数字だけです(なぜ、sdfs989の数字を除外しているのですか)。それとも、行の先頭に表示される数字ですか? –

+0

クリーンアップであるため、その桁は必要ありません。私は最初のN桁だけを必要とし、他のテキストはありません –

答えて

6

方法について:

$str = preg_replace('/^(\d+).*$/', "$1", $str); 
+0

これは私が探していたものです。ありがとう@ M42 –

+0

@VitKos:ようこそ。 – Toto

1

を取得するために、結果として必要があります。正規表現エンジンは文字列の先頭から始まり、1つ以上の数字とマッチしてグループに入れます。それ以外の文字は無視されます。

+0

resutlとして残りの文字列を取得しますが、逆が必要です。 –

0

一つの可能​​な正規表現は '#^(\ dは+)#' のようになります。PHP関数preg_match('#^(\d+)#',$string,$param);の$ PARAMに加えて、[1]これらの数字

3

を返します。この正規表現を使用してみてください:

^([0-9]+)? 
preg_matchコマンドを使用して

文字列の先頭に連続する数字のシーケンスが表示されます。 :-)

例:

function getInitial($line) 
{ 
    $regex = "^([0-9]+)?"; 
    preg_match($regex, $line, $match); 

    return $match[1]; 
} 
+1

'^([0-9] +)?'は '^(\ d +)?'と書くこともできます:ちょっと短い... :-) –

+0

いくつかの操作がありますが、preg_replaceではできません。 –

+0

@VitKos歓迎です;-) –

1

私は理解しているように、あなたは各行の先頭に少なくともN個の数字が必要になります。

preg_match_all("/^(\d{3,})/m", $text, $matches, PREG_SET_ORDER); 
print_r($matches); 
関連する問題