Ищем регулярное выражение, включающее буквенно-цифровые символы + "&" и ";" - PullRequest
1 голос
/ 30 сентября 2008

Вот проблема:

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

Это регулярное выражение отлично работает при работе с обычными словами, но бывают случаи, когда мне нужно, чтобы выражение включало такие слова, как käyttäj&aml;auml;.

Что я должен добавить к регулярному выражению, чтобы включить символы & и ;?

Ответы [ 4 ]

6 голосов
/ 30 сентября 2008

Я бы рассматривал сущности как единое целое (так как они также могут содержать числовые коды символов), что привело бы к следующему регулярному выражению:

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

Это соответствует

  • либо символ слова (включая «_»), либо
  • HTML-сущность, состоящая из
    • символ «&»,
      • символ «#»,
        • символ «x», за которым следует хотя бы одна шестнадцатеричная цифра или
        • хотя бы одна десятичная цифра или
      • хотя бы одна буква (= именованная сущность),
    • точка с запятой
  • хотя бы один раз.

/ EDIT: Спасибо ΤΖΩΤΖΙΟΥ за указание на ошибку.

5 голосов
/ 30 сентября 2008

Вы, вероятно, хотите решить проблему в обратном порядке, то есть найти все символы без пробелов:

[^ \t\n]*

Или вы хотите добавить дополнительные символы:

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

Если вы хотите сопоставить объекты HTML, попробуйте что-то вроде:

(\w+|&\w+;)*
2 голосов
/ 30 сентября 2008

Вы должны создать класс символов, который будет включать дополнительные символы. Например:

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

Это должно сработать. Для вашей информации

  • \w (нижний регистр 'w') соответствует символам слова (буквенно-цифровой)
  • \W (заглавная W) - класс символов с отрицанием (то есть соответствует любому не алфавитно-цифровому символу)
  • * соответствует 0 или более раз, а + соответствует одному или более раз, поэтому * будет соответствовать чему угодно (даже если там нет символов).
0 голосов
/ 30 сентября 2008

Похоже, что сделал трюк:

сплит = re.compile ( '(W + \\ & \\ W +;) *')

Спасибо за предложения. Большинство из них отлично работали на Реджи, но я не совсем понимаю, почему они потерпели неудачу с re.compile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...