Procurando por uma expressão regular incluindo alfanumérico + “&” e “;”

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

  •  02-07-2019
  •  | 
  •  

Pergunta

Aqui está o problema:

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

Esta expressão regular funciona bem quando se trata de palavras regulares, mas há ocasiões em que preciso a expressão para incluir palavras como käyttäj&aml;auml;.

O que devo adicionar à regex para incluir os caracteres & e ;?

Foi útil?

Solução

Você provavelmente vai querer levar o problema inverso, ou seja, encontrar todas as características sem espaços:

[^ \t\n]*

Ou você deseja adicionar os caracteres extras:

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

No caso de você quiser combinar entidades HTML, você deve tentar algo como:

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

Outras dicas

Eu trataria as entidades como uma unidade (uma vez que eles também podem conter códigos de caracteres numéricos), resultando na seguinte expressão regular:

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

Este partidas

  • um caractere de palavra (incluindo “_”), ou
  • uma entidade HTML consistindo de
    • o caractere “&”,
      • o caractere “#”,
        • o caractere “x” seguido por pelo menos um dígito hexadecimal, ou
        • pelo menos um dígito decimal, ou
      • pelo menos uma letra (= entidade nomeada),
    • um ponto e vírgula
  • pelo menos uma vez.

/ EDIT:. Graças a ??O????? por apontar um erro

você deve fazer uma classe de caracteres que incluem os caracteres extras. Por exemplo:

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

Isso deve fazer o truque. Para sua informação

  • \w (minúsculas 'w') coincide com caracteres de texto (alfanumérico)
  • \W (W de capital) é uma classe de caracteres negada (o que significa que corresponde a qualquer caractere não-alfanumérico)
  • * casa 0 ou mais vezes e + corresponde uma ou mais vezes, por isso * irá corresponder a qualquer coisa (mesmo se não há caracteres lá).

Parece que este fez o truque:

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

Obrigado pelas sugestões. A maioria deles funcionou muito bem no Reggy, mas eu não entendo muito bem por que eles falharam com re.compile.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top