Buscando una expresión regular que incluya alfanumérico + “& amp;” y “;”

StackOverflow https://stackoverflow.com/questions/152218

  •  02-07-2019
  •  | 
  •  

Pregunta

Aquí está el problema:

split=re.compile('\\W*')

Esta expresión regular funciona bien cuando se trata de palabras regulares, pero hay ocasiones en las que necesito que la expresión incluya palabras como k & amp; amum; att & amp; auml; j & amp; aml; auml; .

¿Qué debo agregar a la expresión regular para incluir los caracteres & amp; y ; ?

¿Fue útil?

Solución

Es probable que desee resolver el problema a la inversa, es decir, encontrar todos los caracteres sin espacios:

[^ \t\n]*

O quieres agregar los caracteres adicionales:

[a-zA-Z0-9&;]*

En caso de que quieras unir entidades HTML, deberías intentar algo como:

(\w+|&\w+;)*

Otros consejos

Yo trataría a las entidades como una unidad (ya que también pueden contener códigos de caracteres numéricos), dando como resultado la siguiente expresión regular:

(\w|&(#(x[0-9a-fA-F]+|[0-9]+)|[a-z]+);)+

Esto coincide

  • ya sea un carácter de palabra (incluido " _ "), o
  • una entidad HTML que consiste en
    • el carácter “ & amp; ”,
      • el carácter " # ",
        • el carácter " x " seguido de al menos un dígito hexadecimal, o
        • al menos un dígito decimal, o
      • al menos una letra (= entidad nombrada),
    • un punto y coma
  • al menos una vez.

/ EDIT: Gracias a por señalar un error.

debes hacer una clase de caracteres que incluya los caracteres adicionales. Por ejemplo:

split=re.compile('[\w&;]+')

Esto debería hacer el truco. Para su información

  • \ w (minúscula 'w') coincide con los caracteres de las palabras (alfanuméricos)
  • \ W (mayúscula) es una clase de caracteres negada (lo que significa que coincide con cualquier carácter no alfanumérico)
  • * coincide con 0 o más veces y + coincide una o más veces, por lo que * coincidirá con cualquier cosa (incluso si no hay caracteres allí).

Parece que esto hizo el truco:

split = re.compile ('(\\ W + & amp; \\ W +;) *')

Gracias por las sugerencias. La mayoría de ellos funcionaron bien en Reggy, pero no entiendo muy bien por qué fallaron con re.compile.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top