パターンが思うように動作しないときは、Log()を使って、マッチしている部分をJMPログに出力してください。次の例は、パターンマッチングをデバッグし、スクリプトを書き換えて、「the quick brown fox」というフレーズの単語間の空白を考慮する方法を示しています。
word = Pat Repeat( Pat Not Any( " " ) );
// 空白を除く1つ以上の文字の貪欲なマッチ
Pat Match(
"the quick brown fox",
word >> a +
word >> b +
word >> c +
word >> d
);
Show( a, b, c, d );
パターンwordの内容を考えれば、出力はおそらくあなたが望むものではないでしょう パターン内の単語はどれも一致しませんでした。
Show( a, b, c, d )の式は、最初の良いステップになります。 それを見てもJMPがどのようにその答えを得たかがわからない場合は、Log()を以下のように挿入してみてください。
word = Pat Repeat( Pat Not Any( " " ) );
Pat Match(
"the quick brown fox",
(word >> a) >> Log( "a" ) +
(word >> b) >> Log( "b" ) +
(word >> c) >> Log( "c" ) +
(word >> d) >> Log( "d" )
);
Show( a, b, c, d );
word = Pat Repeat( Pat Not Any( " " ) );
gap = Pat Repeat( Pat Any( " " ), 1, 999, GREEDY );
Pat Match(
"the quick brown fox",
word >> a + gap +
word >> b + gap +
word >> c + gap +
word >> d
);
Show( a, b, c, d );