¿Alguno de ustedes puede ayudarme a escribir un patrón de expresiones regulares para el siguiente requisito?
Cadena de prueba:
<sectionb>2.3. Optimized test sentence<op>(</op>1,1<cp>)</cp></sectionb> *<sectiona>2 Surface Model: ONGV<op>(</op>1,1<cp>)</cp></sectiona>* <sectiona>3. Verification of MKJU<op>(</op>1,1<cp>)</cp> Entity</sectiona> *<sectionc>3. 2. 1 <txt>Case 1</txt> Annual charges to SGX</sectionc>* *<sectiona>Compound Interest<role>back</role></sectiona>*Patrón:
<section[az]>[\d]*[^\.]*<\/section[az]El patrón Regex debe coincidir con la siguiente cadena:
<sectiona>2 Surface Model: ONGV<op>(</op>1,1<cp>)</cp></sectiona> <sectionc>3. 2 1 <txt>Case 1</txt> Annual charges to SGX</sectionc> <sectiona>Compound Interest<role>back</role></sectiona>Esto coincide con los requisitos actualizados:
<section\w+>(((\d+\.\s*)*(\d+[^\.]))|[^\d]).*?<\/section\w> <section\w+> \w es casi lo mismo que [az] con + para permitir 0 o más ( <section> <sectionabc> ), elimina + para exactamente una letra
(\d+\.\s*)* 0 o más dígitos/puntos/cualquier cantidad de espacios: haga coincidir la fila 3 actualizada donde ahora es 3. 2. 1 con espacios después de los puntos
(\d+[^\.]) debe coincidir con el dígito sin punto, uno o más dígitos
((...)|[^\d]) o la sección no comienza con un dígito (coincide con la fila 5)
.*? seguido de cualquier carácter, la menor cantidad de veces posible hasta la siguiente </section - probablemente podría hacer esto mirando hacia adelante para simplificar la expresión regular, pero, para mí, esto mantiene separada la cláusula "sin dígitos" separada.