-1

重複の可能性:
文字列から数字を抽出する

preg_match()文字列から数値を抽出するために使用しています。
文字列の例は次advent_id ----------- 3163 (1 row)のとおりです。行数ではなく、数値とそれに続くハイフンを抽出する必要があります。正規表現を書く正しい方法は何ですか? そのソース文字列がどこにあるの
か試しましたが、うまくいきませんでした。数値には任意の桁数を指定できることに注意してください。preg_match('/^advent_id\s------------\s(.*)\s\(/', $cn, $matches);$cn

4

4 に答える 4

2

行の最初の整数を抽出するだけです。

$x = 'advent_id ----------- 3163 (1 row)';
preg_match('/\d+/', $x, $m);
echo "$m[0]\n";

生産:

3163

編集

ご覧のとおり、のデフォルトの動作はpreg_match()、最初のオカレンスと一致してから停止することです。違いますpreg_match_all()

于 2012-10-01T15:41:28.963 に答える
0

コード:

$s = 'advent_id ----------- 3163 (1 row)';
preg_match('~-+ (\d+)~', $s, $m);
print_r($m);

出力します:

Array
(
    [0] => ----------- 3163
    [1] => 3163
)
于 2012-10-01T15:37:39.797 に答える
0

あなたは近かった。あなたの主な問題は、.*任意の文字に一致することだったので、正規表現を複雑にして、数字のみを取得するようにする必要がありました。その部分を変更すると、[0-9]*数字のみが一致し、正規表現がより簡単になります。

$cn = 'advent_id ----------- 3163 (1 row)';
preg_match('/^advent_id -* ([0-9]*)/', $cn, $matches);
print_r($matches[1]);
于 2012-10-01T15:37:41.367 に答える
0

あなたが試すことができます

$string = "advent_id ----------- 3163 (1 row)" ;
$matches = array();
preg_match('/\d+/', $string, $matches);
print($matches[0]);

出力

 3163
于 2012-10-01T15:38:27.067 に答える