1. ホーム
  2. regex

[解決済み] RegexにおけるOR条件

2022-03-03 13:45:13

質問

例えば、次のようなものがあるとします。

1 ABC Street
1 A ABC Street

\d にマッチします。 1 (私が期待するもの)、と \d \w と一致します。 1 A (予想)です。パターンを組み合わせると \d|\d \w の場合、最初の1つだけにマッチし、2つ目は無視されます。

質問は、このような場合に "or" 条件を正しく使用するにはどうしたらよいかということです。

追記:条件は、数字の後に一文字がない場合のみ数字をラップし、それ以外は数字と一文字をラップします。

ABC通り1番地 は1番のみにマッチしますが 1 ABC通り をラップします。 1 A

解決方法は?

試す

\d \w |\d

あるいは、末尾のスペースをマッチに含めたくない場合は、正のルックアヘッドを追加します。

\d \w(?= )|\d

2つの選択肢があり、一方がもう一方の延長線上にある場合、長い方を先に置くと、マッチングする機会がなくなります。