2

正規表現に問題があります (それらは私の得意分野ではありません)。{{ と }} の間のすべての文字列を一致させようとしていますが、一連の括弧が同じ行にある場合、それは単一の一致としてカウントされます... 例:

$string = "
  Hello, kind sir
  {{SHOULD_MATCH1}} {{SHOULD_MATCH2}}
  welcome to
  {{SHOULD_MATCH3}}
  ";

preg_match_all("/{{(.*)}}/", $string, $matches);

var_dump($matches); // returns arrays with 2 results instead of 3

戻り値:

array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(35) "{{SHOULD_MATCH1}} {{SHOULD_MATCH2}}"
    [1]=>
    string(17) "{{SHOULD_MATCH3}}"
  }
  [1]=>
  array(2) {
    [0]=>
    string(31) "SHOULD_MATCH1}} {{SHOULD_MATCH2"
    [1]=>
    string(13) "SHOULD_MATCH3"
  }
}

何か助けはありますか?ありがとう!

4

2 に答える 2

5

*量指定子を貪欲でない形式に置き換え*?ます。

これにより、式全体が一致するようにしながら、一致をできるだけ少なくします。これは、可能な限り一致させる現在の動作とは異なります。

于 2013-01-14T22:50:33.183 に答える
1

次のいずれかのパターンを使用できます。

  1. {{(.+?)}
  2. {{([^}]+)
  3. {{(\w+)
  4. {{([[:digit:][:upper:]_]+)
  5. {{([\p{Lu}\p{N}_]+)
于 2013-01-14T22:56:48.600 に答える