繁体   English   中英

regex:从字符串中提取

[英]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 ))参见演示。

http://regex101.com/r/lZ5mN8/6

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM