«Ничего» в терминах Lookaround [RAKU] - PullRequest
5 голосов
/ 27 февраля 2020

Я читал в регулярных выражениях документацию о «Тильде для вложенных структур».

Дополнительное объяснение использования <?>:

Здесь <?> успешно совпадает пустая строка.

Я предполагал, что смог использовать <?[]> вместо него, но это не удалось!

Как пример:

say so "" ~~ / <?> /;
say so "test" ~~ / <?> /;

say so "" ~~ / <?[]> /;
say so "test" ~~ / <?[]> /;

Ответ:

True
True

False
False

Может ли кто-нибудь дать мне объяснение по этому поводу?

1 Ответ

10 голосов
/ 27 февраля 2020

Синтаксис <?[]> означает упреждение, соответствующее пустому классу символов. Обратите внимание, что пустой класс символов также никогда не совпадает:

say "x" ~~ /<[]>/   # Nil

Класс символов определяет набор символов, которые могут быть сопоставлены. Пустой класс символов подразумевает пустой набор символов и поэтому не может ничего соответствовать.

...