2

Q1: PHP で正規表現を書いていますが、うまくいきません。以下を合わせたい。

    so i would

そうでない場合は、次のように一致します。

    so i

その後:

    i would

    so
    i
    would

これが私のコードです:

\b(so i|i would|so i would|(so|i|would))\b

その唯一の一致: so, i, would, so i, i would .... 一致しない so i would?

4

3 に答える 3

3

正規表現を正しく注文してください。

\b(so i would|so i|i would|(so|i|would))\b

一致させる最長の文字列を左に置きます。は|左結合であるため、正規表現のバージョンでは、短い文字列と一致しています。

于 2012-08-01T04:59:35.193 に答える
0

グループの左側に最長のパターンを配置します:\ b(long | ... | short)\ b
別の解決策:\b(so i would|i would|would|so i|so|i)\b
psこれはNFA正規表現エンジン機能です。「正規表現のマスター」を参照してください。

于 2012-08-01T06:10:13.037 に答える
0

始めに入れるだけ

\b(so i would|so i|i would|(so|i|would))\b
于 2012-08-01T04:59:58.847 に答える