Estoy tratando de armar una expresión regular que coincida con todas las ocurrencias excepto la última de un carácter específico (digamos un signo de exclamación ! ), en un grupo, y luego todo lo demás en otro grupo.

Ejemplos:

a! 1

  • G1: a
  • G2: 1

a !! 1

  • G1: ¡a!
  • G2: 1

A! 1! a !! a

  • G1: a! 1! A!
  • G2: a

Es seguro asumir que el carácter especial no puede estar al principio o al final de la cadena.

Idealmente, quiero que todo esto se logre en

  • una expresión regular
  • sin manipulación adicional con cuerdas
  • sin usar RightToLeft

Gracias, Stevo

0
user1275154 23 ene. 2015 a las 21:03

2 respuestas

La mejor respuesta
(.*)\!(.*)

Entradas / salidas de prueba emparejadas aquí http://www.myregextester.com/index.php

1
seiterm 23 ene. 2015 a las 18:18

¡Esto debería atrapar cualquier cosa antes del último! en un grupo de captura, y todo lo que sigue en el otro grupo de captura

(.*)!([^!]*)
0
1010 23 ene. 2015 a las 18:13