LINUX.ORG.RU

История изменений

Исправление runtime, (текущая версия) :

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

Всё сильно зависит от языка, в котором ты с регулярками работаешь. Тот же Perl позволяет использовать модификатор x (разбиваем регулярки на несколько строк) и интерполяцию строк в регулярках, что вместе очень сильно упрощает работу и повышает читабельность.

Да, это всё равно не решает проблему полностью, но очень сильно расширяет границы, в которых регулярки можно применять.

my $whitespace = '\s+';
my $string = '\S+';

foreach (`who`) {
	/
	(?<user> $string) $whitespace
	(?<tty> $string) $whitespace
	(?<date> $string)
	/x;

	say "$+{user} : $+{tty} : $+{date}"
}

Более того, не забывай, что встречается много разовых задач, которые нужно сделать «здесь и сейчас», например: клиент прислал CSV, из которого нужно взять 3 колонки, немного преобразовать и сгенерировать SQL скрипт для INSERT’а данных. Делается это один раз, после чего твой скрипт и CSV файл выкидываются. В таких задачах RegEx’ы бывают незаменимы.

Исходная версия runtime, :

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

Всё сильно зависит от языка, в котором ты с регулярками работаешь. Тот же Perl позволяет использовать модификатор x (разбиваем регулярки на несколько строк) и интерполяцию строк в регулярках, что вместе очень сильно упрощает работу и повышает читабельность.

Да, это всё равно не решает проблему полностью, но очень сильно расширяет границы, в которых регулярки можно применять.

my $whitespace = '\s+';
my $string = '\S+';

foreach (`who`) {
	/
	(?<user> $string) $whitespace
	(?<tty> $string) $whitespace
	(?<time> $string)
	/x;

	say "$+{user} : $+{tty} : $+{time}"
}

Более того, не забывай, что встречается много разовых задач, которые нужно сделать «здесь и сейчас», например: клиент прислал CSV, из которого нужно взять 3 колонки, немного преобразовать и сгенерировать SQL скрипт для INSERT’а данных. Делается это один раз, после чего твой скрипт и CSV файл выкидываются. В таких задачах RegEx’ы бывают незаменимы.