Я борется с проблемой регулярного выражения. Я как-то строил переводчика, и я пытаюсь извлечь строку, окруженную двумя разделителями.regex: Извлечение из строки
Стартовый разделитель будет следующим образом: CONDITIONS DEXTRACTION :
Конечный ограничитель будет либо: LISTER or CHARGER
$subject = "CONDITIONS D’EXTRACTION : FAMCNT=&TYCNT
AND CGAR=&CODGAR
CHARGER LES PSEUDO VARIABLES : PROPHETE
FICHIER UTILISE POUR LA REQUETE : &NOMFICHIER1
CONDITIONS D’EXTRACTION : TYPOLOGIE (CODANAPL2)=&CODEANA6CAR
LISTER LES DONNEES SUIVANTES : POLNO, CVGNO, DTREDUCTION
FICHIER UTILISE POUR LA FICHIER REQUETE : SDCONT
CONDITIONS D’EXTRACTION : CDPROD=\'OBS\'
AND CDETATCTR=20, 21, 22, 23, 24, 25, 26, 27, 65, 66
AND VERIFONNUM=3
LISTER LES DONNEES"
Шаблон я сделал использование: /CONDITIONS D’EXTRACTION :(.*)(?=[AND\s]*)*/
Заменено: (WHERE=(\1))
Результат сопоставления регулярное выражение не будет принимать все условия, в которых:
- (WHERE=(FAMCNT=&TYCNT)) AND CGAR=&CODGAR CHARGER
- (WHERE=(TYPOLOGIE (CODANAPL2)=&CODEANA6CAR)) LISTER
- (WHERE=(CDPROD='OBS')) AND CDETATCTR=20, 21, 22, 23, 24, 25, 26, 27, 65, 66 AND VERIFONNUM=3 LISTER
я не могу управлять, чтобы создать регулярное выражение возвращения:
- (WHERE=(FAMCNT=&TYCNT AND CGAR=&CODGAR))
-(WHERE=(TYPOLOGIE (CODANAPL2)=&CODEANA6CAR))
- (WHERE=(CDPROD='OBS' AND CDETATCTR=20, 21, 22, 23, 24, 25, 26, 27, 65, 66 AND VERIFONNUM=3 ))
Есть ли у вас какие-нибудь идеи?
Thx
@vks Последний блок кода должен быть выход. '(WHERE = (\ 1))'. Я пробовал следующее regexp в блокноте ++: '^ УСЛОВИЯ D ['|'] EXTRACTION: (. *?) (LISTER | CHARGER)' Кажется, что работает, но используется с php/preg-replace –