3

おそらく、正規表現マスターにとっては本当に簡単です:)私は正規表現の初心者で、PHPを少し手に入れたばかりですが、学びたいと思っています(このプロジェクトが完了したら、頑張って正規表現を解読します)。一部のデータを含む可能性があるが、他のデータを含める必要がある正規表現を作成する方法を理解したいと思います。

私の例では、一致は数字で始まる場合がありますが、そうである必要はありませんが、そうである場合は、数字と次の 2 つの単語が必要です。数字で始まらない場合は、最初の 2 単語のみ。データは文字列の先頭になります。

以下は一致します。

  • 123 Fore Street, Fiveway (123 Fore Street が返されます (コンマなし))
  • 我が家の村 (帰ってきた我が家)
  • 7エイトナイン(7エイトナインリターン)

ありがとう

4

2 に答える 2

11

このようなものが機能するはずです:

^((?:\d+\s)?\w+(?:\s\w+)?)

コーディングする前にhttp://rubular.com/のような場所でテストできますが、通常は簡単です。

その意味:

^->行頭

(?:\d+\s)?->非キャプチャグループ(?:)で構成され、数桁とスペースで構成されます。その後に、が続くため、?オプションです。

\w+(?:\s\w+)?->いくつかの英数字(\ wの意味を調べてください)の後に、オプションでスペースと別の「単語」が続きます。これも非キャプチャグループに含まれます。

すべてがキャプチャグループにカプセル化されているため、グループ1に一致するものが含まれます。

于 2012-10-24T11:32:26.493 に答える
1

この正規表現を複数行オプションで使用する

^(\d+(\s*\b[a-zA-Z]+\b){1,2}|(\s*\b[a-zA-Z]+\b){1,2})

Group1必要なデータが含まれています

\d+数字が一致することを意味します。つまり\d、1回から何度も+

\s*スペースを一致させることを意味します。つまり\s、0から何度も*

(\s*\b[a-zA-Z]+\b){1,2}1〜2語に一致します。

于 2012-10-24T11:31:46.067 に答える