Techioz Blog

文字列のコレクションを読み取り、正規表現を返すことは可能ですか?

概要

複数のソースからのファイルのコレクションがあります。

各ファイルには次のような文字列が含まれています。

File 1: A) B) C) D) E) 
File 2: a) b) c) d) e)
File 3: a. b. c. d. e.
File 4: a- b- c- d- e-
(...)

考えられるすべてのパターンを事前にコーディングできることはわかっていますが、それを自動的に作成したいと考えています。

ファイルを読み取ってパターンを理解するプログラムを作成することは可能でしょうか? 元:

File 1: A) B) C) D) E) # => [ABCDE]\)
File 2: a) b) c) d) e) # => [abcde]\)
File 3: a. b. c. d. e. # => [abcde]\.
File 4: a- b- c- d- e- # => [abcde]-

解決策

Regexp.union は括弧をエスケープできるほど賢いのですが、それだけです。

str = "A) B) C) D) E)"
p re = Regexp.union(*str.split) # => /A\)|B\)|C\)|D\)|E\)/

Perl の Regexp::assemble はこれを実行できるかもしれませんが、私の知る限り、Ruby に相当するものはありません。