WedX - журнал о программировании и компьютерных науках

Выражение Perl Regex для захвата строки между началом и концом строки (с концом строки, имеющим пробел с символом)

Моя строка данных такова:

(wlc-nyhy30-a) *

Мне нужно удалить начальную скобку и конечную скобку, которая точно соответствует ) *.

Моя конечная строка должна быть:

wlc-nyhy30-a

Я могу легко удалить начало (, как показано ниже, но мне очень трудно заставить Perl сопоставить и удалить конец строки ) *

Вот первая часть, которая работает:

$output{'prompt'} =~ s/^\(//;

Цените любую помощь. Заранее спасибо.

11.10.2019

  • Где находится этот ") *) в целевой строке? 11.10.2019
  • @x15, я считаю, что должно быть ) *, как в ) * 12.10.2019

Ответы:


1

Вы можете использовать:

s/^\((.*)\)\s\*$/$1/

Объяснение:

^          beginning of the string
\(         opening parenthese - needs to be escaped with \
(.*)       ...a capturing group...
\)         closing parenthese - needs to be escaped with \
\s         a single space
\*         a star - needs to be escaped
$          end of the string

Это соответствует строке в целом, поэтому оно будет применяться к примеру, который вы предоставили в качестве примера ((wlc-nyhy30-a) *), а также оставит нетронутыми другие строки, такие как (wlc-nyhy30-a) a.

Демо:

my $string = "(wlc-nyhy30-a) *";
$string =~ s/^\((.*)\)\s\*$/$1/
print $string, "\n";

Урожайность:

wlc-nyhy30-a
11.10.2019
  • Может быть, вы читаете больше, чем известно. Не думайте, что он утверждает, что конец является предпосылкой для начала или наоборот, что вызвало бы требование сбалансированного открытия-закрытия. Исходное регулярное выражение выглядело нормально^\(|\)\s\*$ 12.10.2019
  • @x15: ну, трудно сказать наверняка. Я сначала читал как ты, но потом изменил. ОП не комментирует. Может быть, мне следует отредактировать свой ответ, чтобы показать оба решения. 12.10.2019
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]