solo regular palabra letras expresion exacta especiales espacios caracteres regex

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 +.