Простое сворачивание дела против полного сворачивания дела в модуле регулярных выражений Python - PullRequest
0 голосов
/ 09 февраля 2019

Это модуль, о котором я спрашиваю: https://pypi.org/project/regex/, это regex.

у Мэтью Барнетта. На странице описания проекта разница в поведении между V0 и V1 указана как (обратите внимание, что выделено жирным шрифтом):

Старое и новое поведение

Для совместимости с модулем re этот модуль имеет 2 поведения:

  • Поведение версии 0 (старое поведение, совместимое с модулем re):

    Обратите внимание, что поведение модуля re может со временем меняться, и я постараюсь соответствовать этому поведению в версии 0.

    • Обозначается флагом VERSION0 или V0 или (?V0) в шаблоне.
    • Нечувствительные к регистру совпадения при использовании Юникода простое сворачивание регистра по умолчанию.
  • Поведение версии 1 (новое поведение, возможно, отличающееся от модуля re):

    • Обозначается VERSION1или V1 флаг, или (?V1) в шаблоне.
    • регистрозависимые совпадения при использовании Unicode полное складывание по умолчанию по умолчанию.

Если версия не указана, модуль регулярных выражений по умолчанию будет regex.DEFAULT_VERSION.

Я сам попробовал несколько примеров, но не понял, что он делает:

Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import regex
>>> r = regex.compile("(?V0i)и")
>>> r
regex.Regex('(?V0i)и', flags=regex.I | regex.V0)
>>> r.search("И")
<regex.Match object; span=(0, 1), match='И'>
>>> regex.search("(?V0i)é", "É")
<regex.Match object; span=(0, 1), match='É'>
>>> regex.search("(?V0i)é", "E")
>>> regex.search("(?V1i)é", "E")

В чем разница между простым складыванием и полным складыванием?Или вы можете привести пример, где регулярное выражение (без учета регистра) соответствует чему-то в V1, но не в V0?

1 Ответ

0 голосов
/ 09 февраля 2019

Следует Таблица складывания в Unicode .Выдержка:

# The entries in this file are in the following machine-readable format:
#
# <code>; <status>; <mapping>; # <name>
#
# The status field is:
# C: common case folding, common mappings shared by both simple and full mappings.
# F: full case folding, mappings that cause strings to grow in length. Multiple characters are separated by spaces.
# S: simple case folding, mappings to single characters where different from F.

[...]

# Usage:
#  A. To do a simple case folding, use the mappings with status C + S.
#  B. To do a full case folding, use the mappings with status C + F.

Сворачивание отличается только для нескольких специальных символов, примеры небольшие и заглавные латинские s:

00DF; F; 0073 0073; # LATIN SMALL LETTER SHARP S

[...]

1E9E; F; 0073 0073; # LATIN CAPITAL LETTER SHARP S
1E9E; S; 00DF; # LATIN CAPITAL LETTER SHARP S
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...