正規表現が怖いのはうんざりです。この投稿のトピックは正規表現のPHP実装に限定されていますが、一般的な正規表現のアドバイスはもちろんありがたいです(つまり、PHPに適用できないスコープと混同しないでください)。
次の(私は信じています)は、数字の間の空白を削除します。そうするためのより良い方法があるかもしれませんが、それでも私は何が起こっているのかを理解したいと思います。
$pat="/\b(\d+)\s+(?=\d+\b)/";
$sub="123 345";
$string=preg_replace($pat, "$1", $sub);
パターンを見ていくと、私の解釈は次のとおりです。
\b
単語の境界\d+
1桁以上のサブパターン\s+
1つ以上の空白(?=\d+\b)
1つ以上の数字の後に単語境界が続く先読みアサーション?- すべてをまとめて、単語の境界、1つ以上の数字、空白の順に検索し、ある種の先読みアサーションを実行して、パターンを置き換えることができるように結果を$ 1に保存しますか?
質問:
- 私の上記の解釈は正しいですか?
- その先読みアサーションとは何ですか?
- 先頭
/
と末尾の目的は何/
ですか?