[英]regex : Extract from string
我一直在努力解决正则表达式问题。 我正在以某种方式构建翻译器,并且尝试提取由两个定界符包围的字符串。
起始分隔符为: 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 ))
与regexp匹配的结果不会采用完整的where条件:
- (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 ))
你有什么想法 ?
谢谢
CONDITIONS D’EXTRACTION :([\s\S]*?)(?:CHARGER|LISTER)
替换为(WHERE=( $1 ))
参见演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.