Вот проблема:
split=re.compile('\\W*')
Это регулярное выражение отлично работает при работе с обычными словами, но бывают случаи, когда мне нужно, чтобы выражение включало такие слова, как käyttäj&aml;auml;.
käyttäj&aml;auml;
Что я должен добавить к регулярному выражению, чтобы включить символы & и ;?
&
;
Я бы рассматривал сущности как единое целое (так как они также могут содержать числовые коды символов), что привело бы к следующему регулярному выражению:
(\w|&(#(x[0-9a-fA-F]+|[0-9]+)|[a-z]+);)+
Это соответствует
_
#
x
/ EDIT: Спасибо ΤΖΩΤΖΙΟΥ за указание на ошибку.
Вы, вероятно, хотите решить проблему в обратном порядке, то есть найти все символы без пробелов:
[^ \t\n]*
Или вы хотите добавить дополнительные символы:
[a-zA-Z0-9&;]*
Если вы хотите сопоставить объекты HTML, попробуйте что-то вроде:
(\w+|&\w+;)*
Вы должны создать класс символов, который будет включать дополнительные символы. Например:
split=re.compile('[\w&;]+')
Это должно сработать. Для вашей информации
\w
\W
*
+
Похоже, что сделал трюк:
сплит = re.compile ( '(W + \\ & \\ W +;) *')
Спасибо за предложения. Большинство из них отлично работали на Реджи, но я не совсем понимаю, почему они потерпели неудачу с re.compile.