Necesito un regEx para eliminar todo ( y ) de una cadena, excepto aquellos entre dos @.
Ejemplo:
( [15] == @value 1@ || [15] == @value 2@ ) && ( [5] == @value 3 (ignore these)@ || [5] == @value 4@ ) || ( [2] == @value 5@ )La cadena que necesito:
[15] == @value 1@ || [15] == @value 2@ && [5] == @value 3 (ignore these)@ || [5] == @value 4@ || [2] == @value 5@Intenté algo con este grupo que no captura para dividir con espacios en blanco, excepto aquellos entre @, pero no pude encontrar la manera:
(?:@[^@]*@|\S)Estoy bajo presión para resolver esto, cualquier ayuda es apreciada, gracias.
Puede usar esta expresión regular para hacer coincidir:
\s*[()](?=(?:[^@]*@[^@]*@)*[^@]*$)\s*Y reemplácelo con solo una cadena vacía.
Detalles RegEx:
\s* : coincide con 0 o más espacios en blanco[()] : Partido ( o )(?= : Iniciar búsqueda anticipada positiva(?:[^@]*@[^@]*@)* : coincide con 0 o más pares de @...@ subcadenas[^@]* : coincide con 0 más de cualquier cosa menos @$ : Fin) : Fin de la anticipación positiva\s* : coincide con 0 o más espacios en blanco