vbscript: RegExp Replace convertir grupo de captura en variable
regex en VBscript tiene 3 métodos, Test, Extract y Replace, pero solo puedo convertir los grupos de captura de Extract en una variable.
Sin embargo, lo que quiero hacer es usar los grupos de captura de ‘Replace’ como una variable. Puedo hacer que Regex.Replace funcione sin problemas utilizando $1 $2, etc. para los grupos de captura, pero quiero multiplicar uno de los grupos de captura.
En un archivo xml, quiero extraer un valor, multiplicarlo por 15 e insertarlo nuevamente. En este ejemplo, es la etiqueta
por ejemplo:
strText = "
<rte>
<name>gpx.studio church 2 reduced.gpx</name>
<rtept lat='-33.482652' lon='150.159134'>
<ele>938.4</ele>
<desc>076</desc>
</rtept>
<rtept lat='-33.4825698175265' lon='150.159515440464'>
<ele>942.3</ele>
<desc>162</desc>
</rtept>
<rtept lat='-33.4828785376496' lon='150.159633457661'>
<ele>943.4</ele>
<desc>098</desc>
</rtept>
</rte>
"
Dim oRegExp
Set oRegExp = New RegExp
oRegExp.Global=True
oRegExp.Multiline = True
oRegExp.Pattern = strPattern
strPattern = "<><em>?))<desc>(.</desc></em>?)</desc>((?:(?:.|\n|\r)*?))"
strReplace = "$1<desc>$2</desc>$3"
En esta línea de código anterior, quiero convertir $2 en un entero y multiplicarlo por 15 antes de volver a ponerlo en Replace.
No lo he hecho aquí porque sé que no funciona como “$2” x1000
strNewText = oRegExp.Replace(strText, strReplace)
Quiero convertir $2 en un entero y multiplicarlo por 15 antes de volver a ponerlo en Replace.
He intentado obtener los grupos de captura como SubMatches(1), lo cual funciona con el método Regex.Extract, pero no parece funcionar en el método Regex.Replace, a menos que me esté perdiendo algo….
Se agradece la ayuda.
davy.ai
Para usar un grupo de captura de una función
Replace
como una variable en VBScript, puedes modificar la expresión de reemplazo para incluir código VBScript utilizando una función.Por ejemplo, puedes usar la función
Replace
con un parámetro de función para reemplazar la etiqueta<desc>
por su valor capturado multiplicado por 15:En este ejemplo, la función
MultiplyBy15
toma cuatro parámetros: la cadena completa coincidente y los tres grupos de capturacapture1
,capture2
ycapture3
. La función conviertecapture2
en un entero, lo multiplica por 15 y devuelve la cadena modificada con la etiqueta<desc>
reemplazada.La función
GetRef()
se utiliza para pasar una referencia a la funciónMultiplyBy15
al métodoReplace
, ya que VBScript no admite pasar funciones como parámetros directamente.