Как вы находите, используя регулярные выражения, символы начинаются с и заканчиваются любыми символами - PullRequest
0 голосов
/ 28 февраля 2012

В

AXyz122311Xyslasd22344ssaa Aklsssx @ sdddf # 4 = sadsss kaaAASds

Как получить символы "slas", которые начинаются с "11Xy" и заканчиваются "d223" в UNIX с использованием регулярного выражения?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Не слишком поздно, но downvoters должны включить, что * NIX grep имеет несколько ограничений и lookaround / lookbehind / etc., Фактически не работают на большинстве версий.

http://www.regular -expressions.info / grep.html

Поскольку ни grep, ни egrep не поддерживают какие-либо специальные функции, такие как ленивое повторение или обход,

Только недавно он был добавлен в недавно выпущенный GNU grep (3.0?), В котором в основном использует регулярное выражение, совместимое с perl

https://www.gnu.org/software/grep/manual/grep.html#The-Backslash-Character-and-Special-Expressions

-P --perl-regexp Интерпретировать шаблон как Perl-совместимое регулярное выражение (PCRE). Это очень экспериментально, особенно в сочетании с опцией -z (--null-data), и «grep -P» может предупредить о невыполненных функциях.

При обновлении моего grep и использовании -P , это работает как шарм

$cat test.txt | ggrep -oP '(?<=11Xy)(.*?)(?=d223)'
slas

$ggrep --version
ggrep (GNU grep) 3.1
Packaged by Homebrew
Copyright (C) 2017 Free Software Foundation, Inc.
...
0 голосов
/ 28 февраля 2012

Это то, что будет делать с заглядыванием вперед и назад .

Вы пробовали что-то подобное?

(?<=11Xy).+(?=d223)


Обновление

Вы можете использовать grep -o для отображения только совпадающего текста в среде * nix.

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