2016-12-02 2 views
1

У меня есть массивное строку, ниже всего лишь пример:Возникли проблемы с Regexp, извлекая узором из массивной строки

'10029885_96945_S example.com 86.241.75.49 - - [01/Dec/2016:09:00:00 +0000] "GET /_t.gif?pid=12641&evt=25&st=placement&s=0&c=24&t=video&l=dmlkZW8&d=&ord=1480582745631 HTTP/1.1" 200 657 "http://www.lefigaro.fr/flash-actu/2016/11/30/97001-20161130FILWWW00291-paul-guers-et-sa-femme-retrouves-morts-a-leur-domicile.php" "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko" 10.182.9.228:80' 

Использование Regexp мне нужно иметь строку, как это:

GET /_t.gif?pid=12641&evt=25&st=placement&s=0&c=24&t=video&l=dmlkZW8&d=&ord=1480582745631 

I не очень понимают, как шаблон Regexp должен быть constracted, поэтому любая помощь, комментарии, советы, учебные пособия очень ценится.

Спасибо, ребята!

+0

Вы разбираете журнал HTTPd. Я бы рекомендовал изучить, как его разобрать. Есть драгоценные камни и регулярные выражения, поэтому вам не нужно писать свой собственный код, вместо этого вы можете воспользоваться существующими колесами. Найдите «ruby parse httpd log» и «регулярное выражение журнала httpd», и вы найдете полезную информацию. –

+0

Недостаточно привести пример строки, которую вы хотите извлечь. Вам нужно определить характеристики строки, которую можно использовать для ее извлечения. Например, должна ли строка начинаться с 'GET'? Должен ли он заканчиваться символом '& ord =', за которым следует неотрицательное целое число с заданным числом цифр? Должна ли строка заканчиваться в конце строки? Конец строки? –

ответ

1

Я не уверен на 100% цели, но это действительно простое регулярное выражение возвращает правильный результат для вашего образца.

/GET \S*/ 

обрабатывать больше глаголов вы могли бы использовать:

/(GET|PUT|PATCH|DELETE) \S*/ 

Действительно удивительный ресурс для регулярных выражений работы: http://rubular.com/

Я настоятельно рекомендую тестируя ничего сложного там.

+0

Я настоятельно рекомендую проверить ваше второе регулярное выражение с предоставленной вами ссылкой;) –

+0

Yikes; Зацепил мой собственный совет! Потерял набор парнеров. Исправлена. –

+0

Вам не нужны парсеры вокруг каждого слова. В противном случае вы получите две группы с GET. –

Смежные вопросы