Retire la numeración utilizando números romanos

batalla:

Estoy intentando quitar números romanos válidos (numeración) a partir de un texto que contiene encabezados, párrafos, etc ...

Estoy usando esta expresión regular :

Pattern ROMAN = Pattern.compile("^[([]‌?x{0,3}(i[xv]‌|v?i{0,3})[)\.]/]{1,2}", Pattern.CASE_INSENSITIVE);

A pesar de que coincide también el paréntesis vacío.

Lo que quiero hacer es quitar la siguiente:

Input :
iv. foo foo foo.
Output:
foo foo foo.
Input :
v) foo foo foo.
Output:
foo foo foo.

Pero también no hacer nada cuando no usarlos para la numeración:

Input :
foo foo foo i) foo v) .
Output:
foo foo foo i) foo v) .

Otro ejemplo de lo que debe coincidir con la expresión regular: iv) X) ix/ V/ x. IV.

Nikolas:

¿Qué tal algo como la siguiente expresión regular :

^((?=[mdclxvi])m*(c[md]|d?c{0,3})(x[cl]|l?x{0,3})(i[xv]|v?i{0,3})(?:\)|\.))

Esto coincide con un número romano que es seguido por cualquiera )o .caracteres. Hay un buen artículo sobre la correspondencia de los números romanos expresiones regulares Cookbook por Steven Levithan, Jan Goyvaerts de O'Reilly.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=190504&siteId=1
Recomendado
Clasificación