Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

еще 1.

0 views
Skip to first unread message

Mikhail Stakhanov

unread,
Apr 3, 2019, 1:19:58 PM4/3/19
to
Здравствуйте, All!

Не могу сообразить как отпрезать:

($key,$desc) =($1,$2) if ($_ =~ /^(.*?)\s(.*+)(\s|#|;)?+$/);
^^^^^
вот здесь:
$1 до 1го пробела
$2 до последнего пробела или конца строки
если есть #что то или ;что-то то это отрезать

строка вида:
Inboud /var/.... # Что-то не берется...

Я тупой ?


Всего наилучшего, Mikhail

Eugene Grosbein

unread,
Apr 4, 2019, 6:04:58 AM4/4/19
to
03 апр. 2019, среда, в 17:23 NOVT, Mikhail Stakhanov написал(а):

MS> Hе могу сообразить как отпрезать:
MS> ($key,$desc) =($1,$2) if ($_ =~ /^(.*?)\s(.*+)(\s|#|;)?+$/);
MS> ^^^^^
MS> вот здесь:
MS> $1 до 1го пробела
MS> $2 до последнего пробела или конца строки
MS> если есть #что то или ;что-то то это отрезать
MS> строка вида:
MS> Inboud /var/.... # Что-то не берется...

Во-первых, $_ =~ /.../ никогда писать не надо, так как
$_ используется по дефолту и лучше просто писать if /.../;

Оператор =~ применяет /.../ к указанной недефолтной переменной
и он не нужен в случае $_.

Во-вторых: /^(.+?)\s+([^#;\s]+)/

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

Eugene
0 new messages