Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Regular Expressions
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
Visual FoxPro
Divers
Thread ID:
01471819
Message ID:
01471824
Vues:
61
>I'm trying to find all '\xx string in this string:
>{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033{\fonttbl{\f0\fnil\fprq2\fcharset134 SimSun;}}\viewkind4\uc1\pard\f0\fs14\'d7\'f1\'ca\'d8\'b5\'b1\'b5\'d8\'b7\'a8\'b9\'e6\'b7\'cf\'c6\'fa\'c4\'da\'d7\'b0\'ce\'ef\'ba\'cd\'c8\'dd\'c6\'f7 }.
>
>For that I have written the following:
>
>test = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033{\fonttbl{\f0\fnil\fprq2\fcharset134 SimSun;}}\viewkind4\uc1\pard\f0\fs14\'d7\'f1\'ca\'d8\'b5\'b1\'b5\'d8\'b7\'a8\'b9\'e6\'b7\'cf\'c6\'fa\'c4\'da\'d7\'b0\'ce\'ef\'ba\'cd\'c8\'dd\'c6\'f7 }."
>
>Local oRE
>oRE = CreateObject("VBScript.RegExp")
>oRE.Pattern = "\\'([a-zA-Z0-9]+)"
>cresult = oRE.test(test)
>
>
>
>What I had hoped was that it would have returned only the found bits and pieces. In this case:
>
>\'d7\'f1\'ca\'d8\'b5\'b1\'b5\'d8\'b7\'a8\'b9\'e6\'b7\'cf\'c6\'fa\'c4\'da\'d7\'b0\'ce\'ef\'ba\'cd\'c8\'dd\'c6\'f7
>
>However, this only returns .T..
>I used the Regular Expression Tester in Firefox so I know that the pattern is correct....but I seem to miss the point on retrieving the value itself. What am I doing wrong? Any thoughts and help is appreciated.
>
>Regards,
>
>Ron


(1) You need to set oRE.Global to true to find all the matches
(2) oRe.Test() only returns whether the match was successful. In order to get the results you have to use oRE.Execute(test)

Bear in mind that FirstIndex is zero based
	test = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033{\fonttbl{\f0\fnil\fprq2\fcharset134 SimSun;}}\viewkind4\uc1\pard\f0\fs14\'d7\'f1\'ca\'d8\'b5\'b1\'b5\'d8\'b7\'a8\'b9\'e6\'b7\'cf\'c6\'fa\'c4\'da\'d7\'b0\'ce\'ef\'ba\'cd\'c8\'dd\'c6\'f7 }."

	Local oRE, matches, i
	oRE = CreateObject("VBScript.RegExp")
	oRE.Pattern = "\\'([a-zA-Z0-9]+)"

	oRE.IgnoreCase = .f.
	oRE.Global = .t.
	matches = oRE.Execute(test)

	
	local match
	for i = 0 to matches.count-1
		match = m.matches.item[m.i]
		?m.match.FirstIndex, m.match.Length, m.match.Value

	endfor
Gregory
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform