LINUX.ORG.RU

Регулярное выражение Bash


0

1

Ребята, помогите с регулярным выражением :)
Есть HTML:
<form action="http://cs421831.vk.com/upload.php" method=«post» enctype=«multipart/form-data»> <div class=«upload_row»> <input type=«file» class=«upload_input» name=«file1»> </div> <div class=«upload_row»> <input type=«file» class=«upload_input» name=«file2»> </div> <div class=«upload_row»> <input type=«file» class=«upload_input» name=«file3»> </div> <div class=«upload_row»> <input type=«submit» class=«button» value=«Вклеить фотокарточки»> </div> </form>

Он единственный на странице, код страницы в переменной $html_code. Помогите извлечь action=«» в отдельную переменную.



Последнее исправление: WiseAlex (всего исправлений: 1)

А может по xPath?

anonymous
()

html2xhtml | xml sel -t -v '//*[local-name()=«form»]/@action

anonymous
()
Ответ на: комментарий от WiseAlex

Вот, например хорошее обсуждение.

А вообще если такая форма действительно единственная, то

grep action | sed 's/.*action="\(\S*\)".*/\1'

или как-то так

ЗЫ не проверял

ziemin ★★
()
Ответ на: комментарий от WiseAlex

Не слушай его, он обкурился stackoverflow
Для html с заведомо корректной структурой grep вполне нормальное средство
Тебе нужно нечно вроде
echo твойhtml | grep -Po '<action=«>\K.*?(?=»)'
только с кавычками сам разбирайся

zolden ★★★★★
()
Ответ на: комментарий от zolden

Для html с заведомо корректной структурой grep вполне нормальное средство

Чаво? Вам про вложенность, скажем, тегов div рассказывали? Или по-вашему корректное скобочное выражение [ вида (()(())) ] распарсивается регулярной грамматикой?

anonymous
()
Ответ на: комментарий от AITap

Ну и пусть :) Мой скрипт в пару строк, потом изменить не составит труда, мне главное регулярка. А api не нужен, да и работать с ним умею, приложение с большим кол-во юзвером имеется.

WiseAlex
() автор топика
Ответ на: комментарий от anonymous

Не похоже чтобы ТСу нужно было распарсить то что вы перечислели. Задача, сформулированная в ОП отлично решается регулярками.

thesame ★★★★
()
Ответ на: комментарий от anonymous

Не вопрос. Вот конкретный текст, вот конкретная задача ТСа.
Теперь рассказывай мне, где ты там увидел все эти ужасы неподдающиеся регуляркам.

zolden ★★★★★
()
Ответ на: комментарий от AITap

в html'е нет Вклеить фотокарточки, у меня загрузка в альбом.

<div class=«form_item upload_form»> <form action="http://cs421831.vk.com/upload.php?act=do_add&mid=142296012&aid=170689... method=«post» enctype=«multipart/form-data»> <div class=«upload_row»> <input type=«file» class=«upload_input» name=«file1» /> </div> <div class=«upload_row»> <input type=«file» class=«upload_input» name=«file2» /> </div> <div class=«upload_row»> <input type=«file» class=«upload_input» name=«file3» /> </div> <div class=«upload_row»> <input type=«submit» class=«button» value=«Вклеить фотокарточки» /> </div> </form> </div>

WiseAlex
() автор топика
Ответ на: комментарий от thesame

решается регулярками

А что action может внезапно оказаться не первым аттрибутом (или что будут разрывы строки), потенциальные проблемы с кавычками etc.

anonymous
()
Ответ на: комментарий от zolden

Для html с заведомо корректной структурой grep вполне нормальное средство

Теперь рассказывай мне, где ты там увидел все эти ужасы неподдающиеся регуляркам

Какой плавный переход между «корректным html» и конкретным примером. @#$% - не бочки ворочать. А я комментировал именно этот ваш вброс.

Чем конкретнее задача - тем шире выбор средств, которые могут покрыть ее. Впрочем, даже здесь смысла в регулярках немного.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.