0

私は「foobar」という名前を持っており、任意の文字列でfoo、、、foosと一致する必要がありますbarbars

私はこれがこのように機能するはずだと思いました:(foo|bar)s?。他の正規表現も試しましたが、どれもこんな感じでした。これどうやってするの?

4

2 に答える 2

4

(foo|bar)s?正しい...

のような境界を使用する必要があります\b(foo|bar)s?\b。それ以外の場合も一致しhihellofoosます。

于 2012-08-26T17:11:11.840 に答える
2

あなたの質問は、で一致するものを見つけた理由についての困惑を反映しているようですfoosss。文字列内で一致するものを見つけることと、文字列全体を一致させることの違いに注意してください。

これに対処するにはいくつかの方法があり、正しい選択はアプリケーションによって異なります。

  • 正規表現を入力行全体または入力に固定します。^(foo|bar)s?$
  • 正規表現を1つの単語に固定します。\b(foo|bar)s?\b
  • 一部のAPI(ではないpreg_match)には、文字列全体を照合するための個別の関数があります。
于 2012-08-26T17:13:15.890 に答える