Я манипулирую текстовыми файлами и мне нужно создать Perl-скрипт для запуска замены поиска только по примечаниям определенной части текста (в данном случае глав), чтобы я мог преобразовать этот шаблон:
Chapter 1:1 text here(Note a) more text here(Note b)
2 text here(Note c) more text here(Note d)
3 text here(Note e) more text here(Note f)
4 text here(Note g) more text here(Note h)
Chapter 2:1 text here(Note i) more text here(Note j)
2 text here(Note k) more text here(Note l)
3 text here(Note m) more text here(Note n)
4 text here(Note o) more text here(Note p)
5 text here(Note q) more text here(Note r)
6 text here(Note s) more text here(Note t)
в это:
Chapter 1:1 text here(Note a) more text here(Note b)
2 text here(Note c) more text here(Note d)
3 text here(Note e) more text here(Note f)
4 text here(Note g) more text here(Note h)
Chapter 2:1 text here(Note a) more text here(Note b)
2 text here(Note c) more text here(Note d)
3 text here(Note e) more text here(Note f)
4 text here(Note g) more text here(Note h)
5 text here(Note i) more text here(Note j)
6 text here(Note k) more text here(Note l)
Другими словами, мне нужно установить «счетчик» каждой ноты на «а» в начале каждой новой главы.Следующее регулярное выражение соответствует каждой главе:
(?s)^\w{1,10} \d{1,3}:\d{1,3}.+?\(Note \w\).+?(?=\w{1,10} \d{1,3}:\d{1,3})
, и я попытался использовать цикл while, подобный этому:
my @notes = ('Note a', 'Note b', 'Note c', 'Note d');
$Count = a;
foreach my $Marker (@notes) {
$_=~s/(\\(Note\\))[a-z]/"$1".$Count++/e;
}
Но я застрял и не могу придумать способ построитьсценарий таким образом, что он останавливается в каждом разделе главы, а затем начинается снова до конца.Может быть, я использую неправильный подход?
Что мне нужно сделать, чтобы применить поиск и замену только к каждой главе, как показано выше (т. Е. Первое регулярное выражение)?
Любая помощь будет оценена.Спасибо!
РЕДАКТИРОВАТЬ (30 июля)
Оба ответа работают отлично.Я проголосовал за первый как за мой любимый, потому что я лучше понимаю логику, но ОБА одинаково действительны.
Теперь, как следствие моего первого вопроса.Как я мог легко включить название главы и номер главы последовательно перед каждой строкой?Вот так:
Chapter 1:1 text here(Note a) more text here(Note b)
Chapter 1:2 text here(Note c) more text here(Note d)
Chapter 1:3 text here(Note e) more text here(Note f)
Chapter 1:4 text here(Note g) more text here(Note h)
Chapter 2:1 text here(Note a) more text here(Note b)
Chapter 2:2 text here(Note c) more text here(Note d)
Chapter 2:3 text here(Note e) more text here(Note f)
Chapter 2:4 text here(Note g) more text here(Note h)
Chapter 2:5 text here(Note i) more text here(Note j)
Chapter 2:6 text here(Note k) more text here(Note l)
Нужно ли использовать переменную и увеличивать ее или есть более простой подход?