Altova MapForce 2026 Enterprise Edition

Cuando trabaje con contenedores Conmutador, tiene la opción de crear una condición dentro del Conmutador para poder redirigir el fragmento de texto en caso de que la expresión regular devuelva resultados. En tales casos, puede utilizar los caracteres de intercalación ( ^ ) y el signo de dólar ( $ ) para hacer coincidir el principio o el final del texto que se va a buscar, excepto cuando C++ está configurado como lenguaje de transformación de destino. (En C++, los caracteres de intercalación y el signo de dólar se interpretan como el comienzo o el final de una línea, no como el comienzo o el final de todo el texto).

Para usar una expresión regular en una condición de un conmutador:

1.Asegúrese de que el tipo de contenedor es Conmutador (si no lo es, haga clic en el icono interactivo del contenedor y elija Conmutador).

2.Haga clic en el botón Anexar condición btn_add_switch_condtion para agregar una condición nueva.

3.Defina el tipo de condición como La expresión regular encontró resultados en el contenido e introduzca la expresión regular en el cuadro de texto adyacente.

FlexTextRegEx04

 

Ejemplo

Supongamos que necesita asignar datos del archivo de registro de la BD que aparece a continuación (también puede encontrar este archivo en la siguiente ruta de acceso: <Documentos>\Altova\MapForce2026\MapForceExamples\Tutorial\SampleDatabaseLog.txt).

 

Action 18:11:51: INSTALL.

Action start 18:11:51: INSTALL.

Action 18:11:51: WindowsFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E.

Action start 18:11:51: WindowsFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: WindowsFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E. Return value 1.

Action 18:11:51: SystemFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E.

Action start 18:11:51: SystemFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: SystemFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E. Return value 0.

Action 18:11:51: WindowsFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E.

Action start 18:11:51: WindowsFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: WindowsFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E. Return value 0.

Action 18:11:51: SystemFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E.

Action start 18:11:51: SystemFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: SystemFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E. Return value 1.

Action 18:11:51: WindowsFolder.63E949F6_03BC_5C40_FF1F_C8B3B9A1E18E.

Action start 18:11:51: WindowsFolder.63E949F6_03BC_5C40_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: WindowsFolder.63E949F6_03BC_5C40_FF1F_C8B3B9A1E18E. Return value 1.

 

En este caso sus objetivos son dos:

 

1.Recopilar una lista de todas las filas que contienen un valor devuelto. Es decir, la lista debe incluir todas las filas que contienen el valor "Return value 1" o el valor "Return value 0" (o cualquier otro valor devuelto expresado en forma de dígito).

2.Recopilar en otra lista todas las filas cuyo texto contenga el valor "Action start".

 

Para alcanzar estos dos objetivos puede usar un contenedor División repetida para dividir el texto en filas. Después, puede usar un contenedor Conmutador para redirigir cada fila según corresponda. Es decir, el contenedor Conmutador estará compuesto por tres condiciones:

 

1.Redirigir la fila actual al resultado A si contiene el valor "Action started". Estas filas se pueden encontrar con ayuda de una condición de tipo El contenido empieza con y asignándole el valor "Action started".

2.Redirigir la fila actual al resultado B si contiene un valor devuelto. Estas filas se pueden encontrar con ayuda de la expresión regular Return value [0-9]\. . Esta expresión regular devolverá resultados si la fila contiene el texto "Return value" seguido de un solo dígito y después un punto. La barra invertida ( \ ) antes del punto actúa como carácter de escape, para indicar que el punto debe tratarse como un carácter normal, no como un metacaracter.

3.Redirigir la fila actual al resultado C (<predeterminado>) si la fila no cumple con ninguna de las condiciones anteriores.

Para crear una plantilla FlexText que se ocupe de todas las tareas descritas anteriormente:

1.En el menú Insertar seleccione el comando Archivo de texto.

Dlg_InsertTextComponent

2.Haga clic en el botón Diseñar una estructura nueva de forma gráfica de acuerdo con un archivo de muestra y guarde la plantilla FlexText (archivo .mft) en el directorio que quiera.

3.Cuando se le solicite abrir un archivo de texto, busque el archivo <Documentos>\Altova\MapForce2026\MapForceExamples\Tutorial\SampleDatabaseLog.txt.

FlexTextRegEx06

4.En el contenedor de salida haga clic en el botón interactivo y seleccione División repetida. Como nuestro carácter de división es el retorno de carro, elija el modo delimitado (flotante) e introduzca el separador <CR><LF>. Esto da lugar a un nuevo contenedor de salida compuesto por 17 bloques (uno por cada fila).

FlexTextSwitchByRegEx02

5.En este nuevo contenedor de salida haga clic en el botón interactivo y seleccione Conmutador. FlexText tratará el contenido de este contenedor como un conmutador. Como puede verse más abajo, la condición de conmutación <predeterminado> se crea automáticamente (esta condición redirige a un contenedor nuevo el texto que no cumpla con ninguna de las condiciones). Ahora mismo no hay más condiciones así que todo el texto se redirige al contenedor de salida <predeterminado> por ahora.

FlexTextSwitchByRegEx03

6.Haga clic en el botón Anexar condición btn_add_switch_condtion y añada una condición de tipo El contenido empieza con con el valor "Action start" (imagen siguiente). Esta condición redirige a un contenedor nuevo todo el texto que empiece con "Action start".

FlexTextSwitchByRegEx04

 

7.Haga clic en el botón Anexar condición btn_add_switch_condtion y añada una condición de tipo La expresión regular encontró resultados en el contenido con el valor Return value [0-9]\. . Si ahora navegamos al bloque 5, veremos que esta condición redirige dicho bloque a un contenedor nuevo (porque la expresión regular devuelve resultados en este bloque).

FlexTextSwitchByRegEx05

Ahora ha configurado el contenedor Conmutador para que redirija el texto a una salida diferente en función de una condición. Hay por tanto tres condiciones de conmutación y tres posibles resultados (uno por condición). Los pasos restantes de este tutorial muestran cómo puede escribir cada salida en un archivo de texto distinto.

 

8.Haga clic en la esquina superior derecha de cada contenedor de salida y seleccione Guardar como valor. Además, haga doble clic en la barra de título de cada salida e introduzca un nombre descriptivo: Salida A, Salida B y Salida C.

FlexTextSwitchByRegEx06

9.Guarde y cierre la plantilla FlexText.

 

La plantilla FlexText que necesitábamos para la asignación de datos ya está lista. Para ver como funciona esta plantilla consulte el archivo del tutorial: <Documentos>\Altova\MapForce2026\MapForceExamples\Tutorial\FlexTextSwitchByRegEx.mfd.

FlexTextSwitchByRegEx07

FlexTextSwitchByRegEx.mfd

La asignación FlexTextSwitchByRegEx.mfd que puede verse en la imagen anterior lee datos del archivo <Documentos>\Altova\MapForce2026\MapForceExamples\Tutorial\SampleDatabaseLog.txt y los distribuye a tres archivos de texto distintos: Output A, Output B y Output C. Cada archivo de texto de destino contiene solamente las filas que cumplen con una de las tres condiciones definidas previamente en la plantilla FlexText. Para ver el resultado de un componente de destino concreto, haga clic en el botón Vista previa del componente preview situado en la esquina superior derecha del componente y, luego, haga clic en la pestaña Resultados.

© 2019-2025 Altova GmbH