2016-03-27 1 views
0

Мне нужно регулярное выражение, например ([.\n]*), но это не работает. Я попробовал модификатор s также ...Регулярное выражение для любых символов, включая новые строки в Perl

Я хочу, чтобы получить данные из таблицы и регулярного выражения, которое работает в нескольких случаях:

~m/>(@ARGV)<\/.*\n(<td.*\n*.*\/td>\n){3}<td(.*\n*.*\n*)<\/td>/ 

мне нужно использовать $3, но число новых строк не определено, и я понятия не имею, как решить эту проблему. Может кто-нибудь, пожалуйста, помогите мне?

+0

A '.' соответствует любому символу с'/s' модификатора. Не '[. \ N]', который соответствует точке и строке. –

+2

Не используйте regexp для анализа HTML/XML. Таким образом, это безумие и крайняя хрупкость кода. Используйте реальный анализатор HTML/XML для извлечения необходимых данных. –

+0

Спасибо за ответы. Еще один вопрос ... Мне нужно написать код с максимальной длиной 160 символов, как вы думаете, можно ли использовать парсер для извлечения необходимых мне данных? – kata

ответ

1

Я не нашел и @ARGV в вашей тестовой строке. Таким образом, я сделал еще одну закономерность:

<td>((?:<span.*\n*){3})</td> 

REGEX 101 DEMO.

+0

Спасибо, но проблема в том, что я точно не знаю количество строк, это может быть 0 или больше. Я попытался написать * и {0,} тоже вместо {7}, как вы. [здесь приведены данные примера] (https://regex101.com/r/vH9tY4/3) – kata

+0

Теперь группа захвата находится в $ 1. Все хорошо? – Quinn

+0

Я использовал часть оригинальной версии, и этот, и теперь все в порядке, спасибо. – kata