1

大きな文字列から文字列を一致させようとしています。

「クイック ブラウン フォックスはここにいますが、クイック ブラウン フォックスはいつもそこにもいます」

 preg_match('(quick brown fox(.+?)too)',$txt,$match)

問題は、「quick brown fox always over there」ではなく、文全体を取得することです。

2 番目の部分だけを取得するにはどうすればよいですか?..これは、類似した文字列が 1 行程度にまとめられている場合に発生します...

4

2 に答える 2

1

ここには 2 つのキャプチャ グループがあります。配列$matchには..が含まれます

[0] => quick brown fox is here but quick brown fox always over there too
[1] => quick brown fox is here but quick brown fox always over there too
[2] => is here but quick brown fox always over there

また、正規表現に 2 つのスラッシュがありません。

于 2012-10-22T10:51:09.497 に答える
1

非貪欲性はパターンの最後にのみ適用されます (実際には、prce が一致を見つけた場合、より大きな一致を検索せずに単に返すことを意味します)。

「素早い茶色のキツネがここにもいて、いつもあちらにもいる」

preg_match('(quick brown fox(.+?)too)', $txt, $match)

"quick brown fox is here too" のみに一致しますが、探しているものは何もありません。

おそらく、一致を逆にするよりも、 $txt を逆にstrrev()して逆のパターンを書くこともできますが、それはこの特定の問題を解決するだけです。

于 2012-10-22T11:01:23.797 に答える