Регулярные выражения в Ruby получают имя файла - PullRequest
0 голосов
/ 27 марта 2012

Я извлекаю имена файлов html-файлов, используя строку:

filename = File.basename(input_filename, ".*")

, которая в настоящее время печатает полное имя файла, за исключением расширения .html

Все файлы хранятся в виде http^x.x.edu^1^2все имена файлов начинаются с http^ и содержат edu^, что я хочу, чтобы извлечь 2 (который изменяется), но это всегда второй элемент после .edu.Я пытался разрушить gsub!, но я слаб с регулярными выражениями.

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Это должно работать, при условии, что ваш ввод называется filename:

base_file = filename.gsub(/(\S)*.edu/, '').scan(/\w+/)[1]

. .gsub(/(\S)*.edu, '') удаляет все до первого слэша после TLD (.edu).

Затем мы просматриваем то, что осталось (/some/other/file.html), используя регулярное выражение /\w+/, что приводит к ['some','other','file','html'].Выбор второго элемента ([1]) сканирования дает нам второй элемент после TLD .edu.

Это не красиво, но оно должно выполнить работу - я бы хотел увидеть более элегантный способсделать это, если у кого-то есть идеи!

0 голосов
/ 27 марта 2012

Пример строки ввода может помочь, но если я понимаю структуру URL, вам вообще не нужно регулярное выражение:

require 'uri'
File.basename(URI.parse('http://subdomain.domain.edu/one/two').path)

=> 'two'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...