特定の要件を使用して、DB内のいくつかの文を解析(分割)する必要があります。これらの文はさまざまな種類の形式にすることができます。私の文の80%は次のいずれかの形式です。
- COMPANY_NAME、CITY_NAME_1(STREET_ADDRESS、ZIP_CODE CITY_NAME_2)。ANY_STRING
- COMPANY_NAME、CITY_NAME_1、STREET_ADDRESS、ZIP_CODECITY_NAME_2。ANY_STRING
- COMPANY_NAME、CITY_NAME_1、STREET_ADDRESS、ZIP_CODE CITY_NAME_2、(ANY_STRING:ANY_STRING。)。ANY_STRING
- COMPANY_NAME(ANY_STRING)、CITY_NAME_1、STREET_ADDRESS、ZIP_CODECITY_NAME_2。ANY_STRING
ここでは、ルールを指定しました。
- COMPANY_NAMEには、スペース、ハイフォン(-)、ドットを含めることができます。
- COMPANY_NAMEにカンマ、ブレイクを含めることはできません
- CITY_NAME_1とCITY_NAME_2には、スペース、スラッシュ、ブレークレットを含めることができます
- CITY_NAME_1とCITY_NAME_2はカンマを使用できません
- CITY_NAME_1とCITY_NAME_2は95%のケースで同じですが、5%のケースで異なります
- STREET_ADDRESSには、任意のもの(コンマ、ブレイク、特殊文字など)を含めることができます。
- ZIP_CODEはすでに私に知られています(4桁または5桁または6桁の数値文字列)。
私はすでに各文の郵便番号を持っています。そして、文と郵便番号を入力として受け取り、通りの名前を出力として返す正規表現または関数を作成したいと思います。
もちろん、上記の各メソッドの関数を異なる方法で作成できます。しかし、与えられた文がどの形式に適合するかをどうやって知ることができますか?これを正規表現で知ることはできますか?