Ищем регулярное выражение, включающее буквенно-цифровые + «&» и «;»

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

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

[^ \t\n]*

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

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

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

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

Другие советы

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

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

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

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

/РЕДАКТИРОВАТЬ:Спасибо ΤΖΩΤΖΙΟΥ за указание на ошибку.

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

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

Это должно сработать.Довожу до вашего сведения

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

Похоже, это сработало:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top