regex - probar - expresiones regulares: corchetes y paréntesis en la clase de caracteres
probar expresiones regulares (3)
La forma más común es poner un / antes del carácter, pero por extraño que parezca no funcionar para] con grep.
Si puedes usar Perl, haz esto:
% cat yourfile.txt | perl -ne ''print if(/[/[/]/(/)]/);'';
Me gustaría unir estos caracteres: [] () en una clase de personaje en una expresión regular, ¿cómo puedo hacer eso?
echo ''some text (some text in parenthesis) [some other in brackets]'' | grep ''[/[/]/(/)]''
Este no coincide con ningún personaje.
Puedes usarlo así:
echo ''some text (some text in paranthesis) [some other in brackets]'' | grep -o ''[][()]''
(
)
[
]
No necesita escapar (
y )
dentro de una clase de personaje. Además, si coloca ]
y [
justo después de abrir [
no necesita escaparse tampoco].
Solo para tu información:
Accediendo a la documentación de grep
, sección 3.2 Clases de caracteres y expresiones de corchetes :
La mayoría de los metacaracteres pierden su significado especial dentro de las expresiones de corchetes.
'']''
finaliza la expresión del paréntesis si no es el primer elemento de la lista. Por lo tanto, si desea que el carácter '']'' sea un elemento de la lista, debe ponerlo primero.
Además, puede ver que (
, [
y )
no son especiales en las expresiones de corchetes.
Dado que ]
en su patrón de expresión de corchete ''[/[/]/(/)]''
no es el primer carácter, termina el patrón y el siguiente ]
creó una expresión de corchete incompleta.