regex - letras - expresion regular palabra exacta
Expresión regular para extraer texto entre corchetes. (7)
Pregunta regex simple. Tengo una cadena en el siguiente formato:
this is a [sample] string with [some] special words. [another one]
¿Cuál es la expresión regular para extraer las palabras entre los corchetes, es decir.
sample
some
another one
Nota: En mi caso de uso, los paréntesis no se pueden anidar.
¿Se pueden anidar los brackets?
Si no: /[([^]]+)/]
coincide con un elemento, incluidos los corchetes. La referencia inversa /1
contendrá el elemento a coincidir. Si su sabor regex admite lookaround, use
(?<=/[)[^]]+(?=/])
Esto solo coincidirá con el elemento entre paréntesis.
Este código extraerá el contenido entre corchetes y paréntesis.
(?:(?<=/().+?(?=/))|(?<=/[).+?(?=/]))
(?: non capturing group
(?<=/().+?(?=/)) positive lookbehind and lookahead to extract the text between parentheses
| or
(?<=/[).+?(?=/]) positive lookbehind and lookahead to extract the text between square brackets
Esto debería funcionar bien:
/[([^]]+)/]
Puede utilizar el siguiente regex globalmente :
/[(.*?)/]
Explicación:
-
/[
:[
es un meta char y debe escaparse si quieres hacerlo coincidir literalmente. -
(.*?)
: combina todo de una manera no codiciosa y captura. -
/]
:]
es un meta char y debe ser escapado si quieres hacerlo coincidir literalmente.
(?<=/().*?(?=/))
funciona bien según la explicación dada anteriormente. Aquí hay un ejemplo de Python:
import re
str = "Pagination.go(''formPagination_bottom'',2,''Page'',true,''1'',null,''2013'')"
re.search(''(?<=/().*?(?=/))'', str).group()
"''formPagination_bottom'',2,''Page'',true,''1'',null,''2013''"
(?<=/[).+?(?=/])
Capturará contenido sin corchetes.
(?<=/[)
- aspecto positivo detrás de[
.*?
- Match no codicioso para el contenido.(?=/])
- lookahead positivo para]
EDITAR: para corchetes anidados, la expresión regular de abajo debería funcionar:
(/[(?:/[??[^/[]*?/]))
([[][a-z /s]+[]])
Lo anterior debería funcionar dada la siguiente explicación.
los caracteres entre corchetes [] definen la clase de carácter que significa que el patrón debe coincidir con al menos uno de los caracteres mencionados entre corchetes
/ s especifica un espacio
+ significa al menos uno de los caracteres mencionados anteriormente en +.