powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl, как отодвинуть от слова negative look-ahead?
4 сообщений из 4, страница 1 из 1
Perl, как отодвинуть от слова negative look-ahead?
    #38918267
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то я не понимаю. Спасайте.
Надо найти строки в которых есть первое слово, но после которого (на любом расстоянии) нету ни второго, ни третьего.
Например, нужно вывести строки, в которых есть слово "аа", но после него не должно быть, ни ')', ни '*/'.
Код: 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
Perl, как отодвинуть от слова negative look-ahead?
    #38918275
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все дошло. Сам дурак.
/aa.*?(?!bb)/ - значит есть "aa", потом что угодно. А после этого "что угодно" не должно быть "bb". Естественно "bb" тоже является "чем угодно".

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

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

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

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

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


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