Perl регулярное выражение: разделить внутри символа процента "%" - PullRequest
1 голос
/ 06 апреля 2020

Я пытаюсь разбить строку на вложенный символ "%",

, например, у меня есть эта строка "Welcome to %aaatext%, discount 50% and you'll get %bbbtext%, thanks"

, в данном случае ожидаемый результат:

(0) [Welcome to ]
(1) [aaatext]
(2) [, discount 50% and you'll get ]
(3) [bbbtext]
(4) [, thanks]

Я пробовал следующий код

my @arr = split /\%.*text\%/, $str;

, но результаты были далеки от ожиданий: (* ​​1012 *

(0) [Welcome to ]
(1) [, thanks]

в этом случае можно использовать регулярное выражение для сплит?

Большое спасибо.

1 Ответ

1 голос
/ 06 апреля 2020

Попробуйте это Perl однострочник:

% cat > input_file <<EOF                                                             
Welcome to %aaatext%, discount 50% and you'll get %bbbtext%, thanks
EOF

% perl -lne 'print for split m{ % ( \w* text ) % }x, $_;' input_file
Welcome to 
aaatext
, discount 50% and you'll get 
bbbtext
, thanks

Здесь
m{}x - это регулярное выражение с модификатором x, в результате чего Perl игнорирует пробел и комментарии внутри регулярного выражения. для удобства чтения
\w* - это 0 или более символов слова,
% ( \w* text ) % фиксирует слово, оканчивающееся на text, окруженное с обеих сторон знаками процента, что позволяет split также возвращать их.

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