ホームページ  >  に質問  >  本文

正規表現*の問題

<?php

$zz = '/Audi*/';

#$string = "Audi 2500 は私のお気に入りです";

if(preg_match($zz, $string, $matches)){

echo '一致しました、結果は次のとおりです: ';

var_dump($matches);

}else{

echo '一致しません';

}

? >

出力結果が「Audi Audi」または「Audi Di」ではなく「Audi」なのはなぜですか? * は少なくとも 0 回ではありませんか? 2 つのケースですべてが抽出されなかったのはなぜですか?

益伦益伦2499日前1465

全員に返信(8)返信します

  • 又白又帅又可爱

    又白又帅又可爱2017-11-20 12:15:33

    preg_match を使用すると「Audi」に一致する必要があり、preg_match_all を使用すると「Audi Audi」に一致する必要があります。

    これは理論上の結果ですが、実際には正規表現で中国語を一致させる例を見たことがありません。中国語。長さを制限し、次のような中国語のバイトコードを使用します: u4e00-u9fa5

    返事
    0
  • 益伦

    さて、中国語をたくさん試してみましたが、うまくいきませんでした。今後は例として中国語を使用することは少なくなります。

    益伦 · 2017-11-20 23:17:33
  • 路过

    路过2017-11-18 10:27:36

    preg_matchは1つだけ一致

    preg_match_allはすべての一致結果です

    マニュアルを確認することをお勧めします

    返事
    0
  • 益伦

    <?php $zz = '/250*/'; $string = "ディオールとアウディ 25000 が私のお気に入りです"; if(preg_match($zz, $string, $matches)){ echo '一致しました、結果は次のとおりです:'; var_dump($matches); }それ以外{ echo '一致しません'; } ?> ますます混乱してきますが、なぜこのコードの結果は、あなたが言ったように 250 ではなく 25000 なのでしょうか?

    益伦 · 2017-11-18 11:01:48
    益伦

    前の文字と任意の回数 (0 回または任意の回数) 一致します。

    益伦 · 2017-11-18 11:08:10
    益伦

    わかりました、答えてくれてありがとう

    益伦 · 2017-11-20 23:12:45
    路过

    *が何を意味するか知っていますか?

    路过 · 2017-11-18 11:03:33
    路过

    マニュアルを読んでください

    路过 · 2017-11-18 11:39:39
  • キャンセル返事