regex - solo - expresiones regulares, extraer cadena NO entre dos paréntesis
javascript regex test (2)
OK regex pregunta, cómo extraer un carácter NO entre dos caracteres, en este caso los paréntesis.
Tengo una cadena como: word1 | {word2 | word3} | palabra 4
Solo quiero obtener el primer y último ''tubo'', no el segundo que está entre paréntesis. He intentado una gran cantidad de intentos con quilates negativos y agrupaciones negativas y parece que no puedo hacer que funcione.
Básicamente, estoy usando esta expresión regular en una función de división de JavaScript para dividirla en una matriz que contiene: "word1", "{word2 | word3}", "word4".
Cualquier ayuda sería muy apreciada!
Depende del lenguaje / implementación que estés usando, pero ...
/|(?![^{]*})
Esto coincide con una tubería que no está seguida por un }
excepto en el caso de que una {
aparezca primero.
El (?! ... )
se conoce como una afirmación de lookahead negativa . Esto es más fácil de entender si comenzamos con una afirmación positiva de búsqueda anticipada:
/|(?=[^{]*})
Lo anterior solo coincide con una tubería seguida de a }
sin encontrar una {
primero. Cuando niegues eso reemplazando el =
con un !
, el partido ahora solo tiene éxito si no hay forma de que el caso positivo sea verdadero (también conocido como el complemento ).
En refiddle.com configurado a JavaScript, intente usar este patrón
//|(?![^{]*})/g
con este texto
word1 | {word2 | word3 } | word 4 | word 4 | {word2 | word3 }
Esto debería coincidir con todos los símbolos de tubería que no están dentro de {}.