Utilización de expresiones regulares para analizar elementos de datos

Si los mensajes de entrada pueden contener subcampos opcionales cuya presencia o ausencia solamente se pueden determinar analizando el valor real de los datos (por ejemplo, un campo opcional de dígitos numéricos seguido de uno o más caracteres alfabéticos) tiene que utilizar el método de Separación de elementos de datos Utilizar patrón de datos. Esto es especialmente importante para los mensajes que se ajustan al estándar del sector SWIFT. Para utilizar este método, debe proporcionar expresiones regulares para identificar las partes de un mensaje de entrada que se han de asociar a los subcampos. Tiene que proporcionar un valor de expresión regular para la propiedad Patrón de datos de cada hijo del tipo complejo.

Cuando se analizan, los datos se comparan ordenadamente para cada hijo del tipo complejo. El analizador lo lleva a cabo utilizando la expresión regular para el hijo para determinar el número de caracteres del mensaje que se aplican a dicho hijo. Este número de caracteres es la longitud de la serie de caracteres más larga, comenzando por la posición actual del mensaje, que coincide con la expresión regular. Si la serie de caracteres más larga que coincide con la expresión regular tiene una longitud de cero, el elemento está presente en el mensaje y se utiliza la serie vacía para el valor. Si no hay ninguna serie que coincida con la expresión regular, el elemento no está presente. Esto puede ser debido a un error de validación posterior si el elemento es necesario.

Después de haber determinado el número de caracteres a partir del mensaje de entrada, se lleva a cabo una conversión de datos normal, o un análisis adicional en el caso de un elemento complejo, del texto del mensaje de entrada para asignar valores a los elementos. Esto puede llevar a errores, por exceso o por falta, si la longitud identificada por el patrón no es correcta para la definición del hijo.

En Sintaxis de las expresiones regulares se describen las normas completas de sintaxis y cómo aplicarlas pero la tabla siguiente proporciona algunos ejemplos sencillos de análisis de utilización de patrones de datos. Después de la tabla aparece un ejemplo más complejo.

Mensaje de entrada Patrón de datos Valor coincidente
"123456ABC" [0-9]* "123456"
"123" [A-Z]* ""
"123" [A-Z]+ No está presente
"ABCD123"

[A-Z]{1,3} primer campo

[A-Z]{2,4} segundo campo

"ABC" - primer campo (la serie más larga que coincide con el patrón)

No está presente - el segundo campo (la longitud mínima de dos caracteres alfabéticos no está presente)

"ABCDEFGHIJ1234"

[A-Z]{1,3} primer campo, repetir

[0-9]+ segundo campo

"ABC" - primer campo [1]

"DEF" - primer campo [2]

"GHI" - primer campo [3]

"J" - primer campo [4]

"1234" - segundo campo (el campo de repetición finaliza cuando los datos "1234" ya no coinciden con el patrón de datos especificado para el primer campo.)

El ejemplo siguiente muestra tres patrones de campos que coinciden

Definición del mensaje:
	Complex type: Data Element Separation=Use Data Pattern
	Field1:	xsd:string minOccurs=1, maxOccurs=1, Length=5, Pad=SPACE,
				Data Pattern=".{5}"
	Field2:	xsd:int minOccurs=0, maxOccurs=1,
				Data Pattern="[0-9]{0,6}"
	Field3:	xsd:string minOccurs=1, maxOccurs=1, minLength=3, maxLength=4,
				Data Pattern="[A-Z][A-Za-z0-9]{2,3}"

Input1:		"ABCDE123F12"
Result1:		Field1="ABCDE", Field2="123", Field3="F12"

Input2:		"ABCDEF12"
Result2:		Field1="ABCDE", Field2=not present, Field3="F12"

Input3:		"ABCDE123456XXXX"
Result3:		Field1="ABCDE", Field2="123456", Field3="XXXX"

Input4:		"ABCDE1234567"
Result4:		Field1="ABCDE", Field2="123456", Field3=no está presente,
				por lo que se genera una excepción si se habilita la validación. Un
				carácter ("7") permanece sin asignar a algún elemento, lo que genera
				también una excepción. 

En el caso de un hijo que se repite, se analizan las instancias del hijo tantas veces como coincida el patrón. Esto se aplica incluso si se especifica Máx apariciones para el elemento de repetición y el número de apariciones supera el límite superior. Por lo tanto, se debe determinar alguna condición de finalización del patrón de expresión regular del elemento. La tabla anterior incluye un ejemplo de un elemento de repetición.

Cuando se analizan, los datos del mensaje de entrada que coinciden con el Patrón de datos y se asignan a un elemento no se exploran adicionalmente para los delimitadores de un tipo complejo de nivel superior. Este comportamiento es similar al del método de Separación de elementos de datos Longitud fija. No obstante, puede codificar una expresión regular que coincida con los datos en un número de delimitadores posibles.

Cuando se escribe, si se especifica una longitud para un hijo, se rellena el valor según corresponda hasta dicha longitud. Este comportamiento es similar al del método deSeparación de elementos de datos Elementos de longitud variable delimitados, pero sin delimitadores.

Si el mensaje incluye un tipo complejo que tiene establecido Composición en Elección, puede establecer el método de Separación de elementos de datos en Utilizar patrón de datos. En este caso, se utilizan los valores del Patrón de datos de los hijos para resolver la elección. Comenzando por el primer hijo, el primer patrón es proporcionar una coincidencia que determine qué hijo está presente. Por lo tanto, el orden de los hijos en una elección puede ser importante.

Un tipo complejo puede contener hijos repetidos con el Máx apariciones sin límite. La longitud y otras propiedades asociadas como, por ejemplo, la justificación y el relleno, se pueden especificar opcionalmente para los hijos.

Consulte Integridad del modelo de mensaje TDS para obtener información sobre las normas que debe seguir para utilizar el método de Separación de elementos de datos Utilizar patrón de datos y consulte Combinaciones de Composición y Validación de contenido para obtener los valores válidos de Composición y Validación de contenido.

Conceptos relacionados
Diseño de mensajes
El modelo de mensaje

Tareas relacionadas
Desarrollo de modelos de mensajes
Trabajar con un archivo de definición de mensajes
Trabajo con los objetos del modelo de mensajes

Referencia relacionada
Información de referencia del modelo de mensaje
Propiedades del objeto del modelo de mensaje
Información adicional del dominio MRM
Información TDS adicional