Можно ли прочитать коллекцию строк и вернуть регулярное выражение?

У меня есть коллекция файлов из нескольких источников.

Каждый файл содержит строки вроде:

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]-

1 ответ

Regexp.union достаточно умен, чтобы избежать паренов, но это так.

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

Perl Regexp::assembly может быть в состоянии сделать это, AFAIK нет никакого эквивалента Ruby.

Другие вопросы по тегам