Pregunta

Tengo una expresión regular donde

%word% can occur multiple times, separated by a "<"

% word% se define como ". *? " | [a-zA-Z] + así que escribí

(".*"|[a-zA-Z]+)([<](".*"|[a-zA-Z]+))*

¿Hay alguna forma de reducirlo usando grupos de captura?

(".*"|[a-zA-Z]+)([<]\1)*, 

Pero no creo que \ 1 pueda usarse, ya que significaría repetir la primera captura, ya que no sabría qué se capturó, ya que puede ser una cadena entre comillas o una palabra.

Cualquier cosa similar que pueda usar para referirme al grupo escrito anteriormente. Estoy trabajando en C #.

¿Fue útil?

Solución 2

Como el soporte aún no está disponible para la característica, hice un reemplazo de cadena, donde escribí las palabras específicas que necesito reemplazar por regex usando %% y luego escribí el programa para reemplazarlo por la expresión regular definida para el texto.

Otros consejos

usando String.Format para evitar la repetición y no, no hay forma de repetir el grupo de expresiones regulares literalmente

String.Format("{0}([<]{0})*", @"("".*""|[a-zA-Z]+)")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top