В regex, что означает \w *?

В Python. г ^ [\ ш *] $

Что это значит?

Ответ 1

Быстрый ответ: Сопоставьте строку, состоящую из одного символа, где этот символ является буквенно-цифровым (буквы, цифры) подчеркиванием (_) или звездочкой (*).

Детали:

  • "\w" означает "любой символ слова", который обычно означает буквенно-цифровое (буквы, цифры, независимо от случая) плюс подчеркивание (_)
  • "^" "привязывает" к началу строки, а "$" "привязывает" к концу строки, что означает, что в этом случае совпадение должно начинаться с начало строки и конец в конце строки.
  • [] означает класс символов, что означает "соответствие любому символу, содержащемуся в классе символов".

Также стоит упомянуть, что нормальные правила цитирования и экранирования для строк затрудняют ввод регулярных выражений (все обратные косые черты должны быть экранированы с помощью дополнительных обратных косых черт), поэтому в Python имеется специальное обозначение, которое имеет свои собственные специальные правила цитирования, которые позволяют интерпретировать все обратные косые черты должным образом, и именно это означает "r" в начале.

Примечание: Обычно звездочка (*) означает "0 или более предыдущей вещи", но в приведенном выше примере она не имеет этого значения, поскольку звездочка находится внутри символьный класс, поэтому он теряет свою "специальность".

Для получения дополнительной информации о регулярных выражениях в Python, двумя официальными ссылками являются re module, регулярное выражение HOWTO.

Ответ 2

Как говорит эксгума, \w - любой символ слова-класса (буквенно-цифровой, как поясняет Джонатан).

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

  • один буквенно-цифровой символ ИЛИ
  • звездочка (*)

Итак, все регулярное выражение соответствует:

  • начало line (^)
  • за которым следует либо один буквенно-цифровой символ или Звездочка
  • за которым следует конец line ($)

поэтому следующее:

blah
z  <- matches this line
blah

или

blah
* <- matches this line
blah

Ответ 4

\ w ссылается на 0 или более буквенно-цифровых символов и подчеркивание. * в вашем случае также находится внутри класса символов, поэтому [\ w *] будет соответствовать всем [a-zA-Z0-9_ *] (буква * интерпретируется буквально)

См. http://www.regular-expressions.info/reference.html

Цитата:

\ d,\w и \s --- Сокращенные классы символов, соответствующие цифрам, символам слов и пробелам. Может использоваться внутри и снаружи классов символов.

Изменить исправлено в ответ на комментарий

Ответ 5

Как сказано выше, \w означает любое слово. поэтому вы можете использовать это в контексте ниже

view.aspx?url=[\w]

что означает, что вы можете иметь любое слово в качестве значения параметра "url ="

Ответ 6

\ w эквивалентно [a-zA-Z0-9_] Я не понимаю его после него или [] вокруг него, потому что \w уже является классом и * в определениях классов не имеет смысла.