Regexp для поиска имен книг (Delphi 7 и DiRegEx 8.8.1)

Я использую Delphi 7, и это первый раз, когда я использую библиотеку DiRegEx. Мне нужно собрать имена книг, которые находятся в списке. Список длинный, но у него есть идея, что это выглядит как строка: d d? D?: D d? D?

Tesalonickym Tesalonickym 3:15 3:14 2 2 2 2 3:16 Tesalonickym Tesalonickym 3:18 1 3:17 2 Tesalonickym Timoteovi 1: 1 1 Timoteovi 1: 2 1 Timoteovi 1: 3 1 Timoteovi 1: 4

Так что я хочу найти RegEx.Match - это строки «2 Tesalonickym» и «1 Timoteovi». Поэтому я хочу найти ...var contents : TStringList; RegEx: TDIRegEx; WordCount: Integer; s:string; begin Contents := TStringList.Create; RegEx := TDIPerlRegEx.Create{$IFNDEF DI_No_RegEx_Component}(nil){$ENDIF}; Contents.LoadFromFile('.. eference dlouhe CS.txt'); for i:=0 to Contents.count-1 do begin Contents[i]; try RegEx.SetSubjectStr(Contents[i]); RegEx.MatchPattern := 'w+'; WordCount := 0; if RegEx.Match(0) >= 0 then begin repeat Inc(WordCount); s := RegEx.MatchedStr; WriteLn(WordCount, ' - ', s); until RegEx.MatchNext < 0; end; finally RegEx.Free; end; // end try end; // end for end;

Мой код:

dd?d?:dd?d?

И мне нужно изменить регулярное выражение так, (*UCP)^(?:d+s+)?w+(?=s+dd?d?:d)чтобы оно не было в результате, но должно быть «якорем» или «иглой». Как сделать регулярное выражение (* UCP) ^ (?: D + s +)? W + (? = S + d {1,3}: d)

Результат:

Это полный список из 66 книг Библии в UTF-8. Были некоторые проблемы с шаблоном (* UCP), потому что эти dos не включают такие символы, как Z или s.

Бытие, Исход, Левит, Числа, Deuteronomium, Джошуа, Soudcu, Руфь, 1 Samuel, 2 Samuel, 1 Kralovska; 2 Kralovska; 1 Паралипоменон; 2 Паралипоменон; Ezdras; Nehemjas, Эстер, Работа, Алми, наречия, шоу, письменный письменный ; Izajas; Jeremjas; заработная плата; Ezechiele, Даниил; Ozeas, Иоиль, Амос, Abdijas, Jonas, Михей, Наум, Abakuk; Sofonjas; Ageus; Zacharjas; Malachias; матозный, Marek, Lukas, Ян; Skutky апостольская; Rimanum; 1 Korintskym ; 2 Korintskym; Galatskym; Efezskym; Filipskym; Koloskym; 1 Tesalonickym; 2 Tesalonickym; 1 Timoteovi; 2 Timoteovi; Тито; Filemonovi; Zidum; Jakubuv; 1 Petruv; 2 Petruv; 1 Januv; 2 Januv; 3 Januv; Juduv; Zjeveni Janovo;

regex,delphi,

0

Ответов: 1


1 принят

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

^

Или

(?:

A d+при запуске шаблона (глагол PCRE), чтобы сделать все сокращения Unicode-осведомленными.

Соответствие шаблонов

  • s+ - начало строки
  • )? - запуск группы, не связанной с захватом
    • ? - 1 + цифры,
    • w+ - 1 + пробелы и
  • (?=s+d{1,3}:d)- конец группы без захвата, 1 или 0 вхождения ( ?делает ее необязательной)
  • : - 1 + слово символов ...
  • w- сопровождаются 1 + пробелами, от 1 до 3 цифр :и цифрой.

См. Демо-версию regex .

w, Возможно , потребуется замена с , p{L}если вам нужно только , чтобы соответствовать письма.

регулярное выражение, Дельфы,
Похожие вопросы