Ruby では、正規表現が 2 つある場合、次のように別の正規表現を作成できます。
a = /\d+/ # Matches digits
b = /\s+/ # Matches whitespaces
c = Regexp.union(a, b) # Matches sequences that consist only of digits or only of whitespaces
Scalaで同じことをしたいのですが、どうすればそれができるかわかりませんでした。前の例のように、文字クラスの結合を作成するための構文を求めているわけではないことに注意してください(\d+)|(\s+)
。与えられた 2 つの正規表現から新しい正規表現を作成する可能性を実際に探しています。
実際には、最終的には、2 つの正規表現だけではなく、多数の正規表現に対して行います。グループ化などは気にしません。文字列が特定の正規表現のリストのいずれかと一致するかどうかを知りたいだけです。それらすべてをループでチェックすることもできますが、それは非効率的です。そのため、ユニオンをチェックするために 1 つの Regexp が必要です。