Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl, как отодвинуть от слова negative look-ahead? / 4 сообщений из 4, страница 1 из 1
27.03.2015, 00:15
    #38918267
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl, как отодвинуть от слова negative look-ahead?
Чего-то я не понимаю. Спасайте.
Надо найти строки в которых есть первое слово, но после которого (на любом расстоянии) нету ни второго, ни третьего.
Например, нужно вывести строки, в которых есть слово "аа", но после него не должно быть, ни ')', ни '*/'.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@a = (
	"1 aabcd",
	"2 */ aa",
	"3 aa sad */",
	"4 aaxzf )",
	"5 aa!@#$%^&)_+",
	"6 aa)",
	"7 /*aa*/"
);

foreach (@a) {
	if( /aa.*?(?!\)|\*\/)/) {
		print "$_\n";
	}
}

Как изменить данное выражение, чтобы в выводе были только первые две строки?
...
Рейтинг: 0 / 0
27.03.2015, 00:34
    #38918275
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl, как отодвинуть от слова negative look-ahead?
Все дошло. Сам дурак.
/aa.*?(?!bb)/ - значит есть "aa", потом что угодно. А после этого "что угодно" не должно быть "bb". Естественно "bb" тоже является "чем угодно".

Правильное выражение: /aa(?!.*(\)|\*\/))/
...
Рейтинг: 0 / 0
27.03.2015, 16:23
    #38919299
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl, как отодвинуть от слова negative look-ahead?
White OwlВсе дошло. Сам дурак.
/aa.*?(?!bb)/ - значит есть "aa", потом что угодно. А после этого "что угодно" не должно быть "bb". Естественно "bb" тоже является "чем угодно".

Правильное выражение: /aa(?!.*(\)|\*\/))/

а не будет работать проще, Началостроки+аа+(не ББ)*+Конецстроки
(знак плюса - разделитель логических частей)
...
Рейтинг: 0 / 0
27.03.2015, 22:22
    #38919644
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl, как отодвинуть от слова negative look-ahead?
alex564657498765453White OwlВсе дошло. Сам дурак.
/aa.*?(?!bb)/ - значит есть "aa", потом что угодно. А после этого "что угодно" не должно быть "bb". Естественно "bb" тоже является "чем угодно".

Правильное выражение: /aa(?!.*(\)|\*\/))/

а не будет работать проще, Началостроки+аа+(не ББ)*+Конецстроки
(знак плюса - разделитель логических частей)
Нет, не будет. В современных регулярках нету возможности одновременно использовать "есть" и "не есть" шаблоны, за исключением nLA. А на look around не действуют количественные модификаторы.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl, как отодвинуть от слова negative look-ahead? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]