извлечь весь текст (включая пробел и возврат каретки) между двумя словами с помощью регулярного выражения perl - PullRequest
0 голосов
/ 14 февраля 2019
my $example=<<EO_STR;

Start

text1 

text2 


text3 Text4

Text5 text6

text7

End

EO_STR

на следующем примере.Я хочу извлечь весь текст между Началом и Концом (зная, что текстовый экстракт содержит пробелы и новую строку и возвращает символ charriot)

Я пробовал это, но это не работает:

$example=~m/start\s+(.*?)\s+end/i

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Конец строки, то есть \n, является пробелом, поэтому его можно просто записать как

$example =~ /(?i:start)([\w\s]+)(?i:end)/

. Есть ли особая причина, по которой start и end должны совпадатьнечувствительным?Ваш пример показывает, что регулярное выражение может быть упрощено до:

$example =~ /Start([\w\s]+)End/
0 голосов
/ 14 февраля 2019

Мне удалось найти решение благодаря всем вам

$example=~m/start([a-zA-Z0-9\p{P}\p{S} \s]*)end/i;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...