Регулярное выражение для удаления пробела в середине строки перед символом - PullRequest
2 голосов
/ 02 апреля 2019

Я пытаюсь зафиксировать "Некоторая компания" из строки ниже

@@VALUE= Some Company Name            @@

Но без пробелов перед окончательной @@.

Я получаю эти данныекак канал, поэтому я пытаюсь использовать регулярное выражение в Perl для замены этой части, поэтому конечный результат будет выглядеть так:

@@VALUE=Some Company Name@@

Я могу сопоставить пробел перед названием компании, но мой матчдля названия компании всегда:

"Some Company Name            "

В настоящее время используется это регулярное выражение:

(\@\@VALUE=)(\s)([^@]*)

Удаление конечного пробела было бы легко, если бы не @@ в конце.

Ответы [ 3 ]

1 голос
/ 02 апреля 2019

Если вы пытаетесь удалить все пробелы до финального @@, это просто

s/\s+\@\@$/\@\@/;

Я не уверен, почему вам нужно сопоставить что-либо еще.

0 голосов
/ 11 апреля 2019

или используйте ленивый режим Perl Regex

$s = '@@VALUE= Some Company Name       @@'
$s =~ s/@@VALUE=\s*(.+?)\s*@@\s*$/$1/
print $s
0 голосов
/ 03 апреля 2019

Попробуйте Regex: \s+(?=@@$)

Regex Demo

Perl Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...