Инструменты пользователя

Инструменты сайта


help:regexp

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:regexp [2023/01/01 17:07]
aleks_versus
help:regexp [2024/10/14 11:12] (текущий)
aleks_versus обновление 5.9.0
Строка 1: Строка 1:
- 
 [[help:​strings|Назад:​ Строки]] [[help:​strings|Назад:​ Строки]]
  
 ====== Регулярные выражения ====== ====== Регулярные выражения ======
- 
  
 Этот раздел может на первый взгляд показаться сложным. Этот раздел может на первый взгляд показаться сложным.
Строка 15: Строка 13:
 ===== Функции,​ использующие регулярные выражения ===== ===== Функции,​ использующие регулярные выражения =====
  
-  ''​**STRCOMP(**[$строка]**,**[$шаблон]**)**''​ - проводит сравнение строки ''​[$строка]''​ на соответствие регулярному выражению ''​[$шаблон]''​. Возвращает 1, если строка соответствует шаблону,​ иначе ​**0**. Сравни с функцией ''​$STRFIND''​.<​sxh qsp> +  ​* ''​%%STRCOMP([$строка],​[$шаблон])%%''​ - проводит сравнение строки ''​%%[$строка]%%''​ на соответствие регулярному выражению ''​%%[$шаблон]%%''​. Возвращает ​''​%%1%%''​, если строка соответствует шаблону,​ иначе ​''​%%0%%''​. Сравни с функцией ''​%%$STRFIND%%''​. <sxh qsp> 
- strcomp('​иду по дороге','​\s?​\S+\s+\S+\s+\S+\s?'​) & ! вернёт 1 +strcomp('​иду по дороге','​\s?​\S+\s+\S+\s+\S+\s?'​) & ! вернёт 1 
- strcomp('​ иду домой','​\s?​\S+\s+\S+\s+\S+\s?'​) & ! вернёт 0 +strcomp('​ иду домой','​\s?​\S+\s+\S+\s+\S+\s?'​) & ! вернёт 0 
- strcomp('​ иду в лес ','​\s?​\S+\s+\S+\s+\S+\s?'​) & ! вернёт 1 +strcomp('​ иду в лес ','​\s?​\S+\s+\S+\s+\S+\s?'​) & ! вернёт 1 
- strcomp('​однословие','​\s?​\S+\s+\S+\s+\S+\s?'​) & ! вернёт 0+strcomp('​однословие','​\s?​\S+\s+\S+\s+\S+\s?'​) & ! вернёт 0
 </​sxh>​ </​sxh>​
-  ''​**$STRFIND(**[$строка]**,**[$шаблон]**,**[#​номер]**)**''​ - эта функция ищет в строке ''​[$строка]''​ подстроку,​ соответствующую регулярному выражению ''​[$шаблон]'',​ и возвращает эту подстроку.<​sxh qsp> +  ​* ''​%%$STRFIND([$строка],​[$шаблон],​[#​номер])%%''​ - эта функция ищет в строке ''​%%[$строка]%%''​ подстроку,​ соответствующую регулярному выражению ''​%%[$шаблон]%%'',​ и возвращает эту подстроку. <sxh qsp> 
- ! функция найдёт слово из четырёх букв +! функция найдёт слово из четырёх букв 
- $STRFIND('​идти к пещере',​ '​\b\w{4}\b'​) &! на экране увидим '​идти'​+$STRFIND('​идти к пещере',​ '​\b\w{4}\b'​) &! на экране увидим '​идти'​
 </​sxh>​ </​sxh>​
- * Если указан ''​[#​номер]'',​ то функция возвращает не всю найденную подстроку,​ а только ту её часть которая соответствует группе с указанным номером ''​[#​номер]''​. Группы нумеруются слева направо,​ сначала внешние,​ а потом внутренние,​ начиная с **1**.<​sxh qsp> +    ​* Если указан ''​%%[#​номер]%%'',​ то функция возвращает не всю найденную подстроку,​ а только ту её часть которая соответствует группе с указанным номером ''​%%[#​номер]%%''​. Группы нумеруются слева направо,​ сначала внешние,​ а потом внутренние,​ начиная с **1**. <sxh qsp> 
- ! первая группа в первых скобках,​ вторая во вторых,​ третья - в скобках,​ вложенных во вторые +! первая группа в первых скобках,​ вторая во вторых,​ третья - в скобках,​ вложенных во вторые 
- $STRFIND('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​1) &! на экране увидим '​671'​ +$STRFIND('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​1) &! на экране увидим '​671'​ 
- $STRFIND('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​2) &! на экране увидим '​-190-23-999'​ +$STRFIND('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​2) &! на экране увидим '​-190-23-999'​ 
- $STRFIND('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​3) &! на экране увидим '​-999'​+$STRFIND('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​3) &! на экране увидим '​-999'​
 </​sxh>​ </​sxh>​
-  Если подстрока с указанным номером отсутствует,​ то возвращается пустая строка.<​sxh qsp> +    ​* Если подстрока с указанным номером отсутствует,​ то возвращается пустая строка. <sxh qsp> 
- ! пытаемся отыскать числа в строке без чисел +! пытаемся отыскать числа в строке без чисел 
- $STRFIND('​Восемь зелёных яблок в корзине','​\d+'​) &! на экране будет пустая строка+$STRFIND('​Восемь зелёных яблок в корзине','​\d+'​) &! на экране будет пустая строка
 </​sxh>​ </​sxh>​
-  Ещё примеры:<​sxh qsp> +    ​* Ещё примеры:​ <sxh qsp> 
- $STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 0) &! '​идти к пещере'​ +$STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 0) &! '​идти к пещере'​ 
- $STRFIND('​ идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 0) &! ''​ +$STRFIND('​ идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 0) &! ''​ 
- $STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 1)  &! '​идти'​ +$STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 1)  &! '​идти'​ 
- $STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 2)  &! '​к'​ +$STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 2)  &! '​к'​ 
- $STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 3)  &! '​пещере'​ +$STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 3)  &! '​пещере'​ 
- $STRFIND('​идти к дому',​ '​к\s(\S+)',​ 0) &! 'к дому'​  +$STRFIND('​идти к дому',​ '​к\s(\S+)',​ 0) &! 'к дому'​ 
- $STRFIND('​идти к дому',​ '​к\s(\S+)'​) ​   &! 'к дому'​ +$STRFIND('​идти к дому',​ '​к\s(\S+)'​) ​   &! 'к дому'​ 
- $STRFIND('​идти к дому',​ '​к\s(\S+)',​ 1) &! '​дому'​ +$STRFIND('​идти к дому',​ '​к\s(\S+)',​ 1) &! '​дому'​ 
- $STRFIND('​идти к своему дому',​ '​к\s(\S+)',​ 1) &! '​своему'​+$STRFIND('​идти к своему дому',​ '​к\s(\S+)',​ 1) &! '​своему'​
 </​sxh>​ </​sxh>​
-  ''​**STRPOS(**[$строка]**,**[$шаблон]**,**[#​номер]**)**''​ - эта функция похожа на функцию ''​**$STRFIND**'',​ то есть она ищет в строке ''​[$строка]''​ подстроку,​ соответствующую регулярному выражению ''​[$шаблон]''​. Однако,​ в отличие от функции ''​**$STRFIND**'',​ она возвращает номер символа,​ с которого начинается вхождение найденной подстроки в указанную строку ''​[$строка]''​.<​sxh qsp> +  ​* ''​%%STRPOS([$строка],​[$шаблон],​[#​номер])%%''​ - эта функция похожа на функцию ''​%%$STRFIND%%'',​ то есть она ищет в строке ''​%%[$строка]%%''​ подстроку,​ соответствующую регулярному выражению ''​%%[$шаблон]%%''​. Однако,​ в отличие от функции ''​%%$STRFIND%%'',​ она возвращает номер символа,​ с которого начинается вхождение найденной подстроки в указанную строку ''​%%[$строка]%%''​. <sxh qsp> 
- ! функция найдёт слово из трёх букв, и вернёт номер первого символа,​ +! функция найдёт слово из трёх букв, и вернёт номер первого символа,​ 
- ! с которого это слово начинается +! с которого это слово начинается 
- STRPOS('​Здесь три слова.',​ '​\b\w{3}\b'​) &! на экране увидим 7+STRPOS('​Здесь три слова.',​ '​\b\w{3}\b'​) &! на экране увидим 7
 </​sxh>​ </​sxh>​
- * Если указан ''​[#​номер]'',​ то функция возвращает номер символа,​ с которого начинается вхождение не всей подстроки,​ а только той её части, которая соответствует группе с указанным номером ''​[#​номер]''​. Группы нумеруются слева направо,​ сначала внешние,​ а потом внутренние,​ начиная с **1**.<​sxh qsp> +    ​* Если указан ''​%%[#​номер]%%'',​ то функция возвращает номер символа,​ с которого начинается вхождение не всей подстроки,​ а только той её части, которая соответствует группе с указанным номером ''​%%[#​номер]%%''​. Группы нумеруются слева направо,​ сначала внешние,​ а потом внутренние,​ начиная с **1**. <sxh qsp> 
- !------'​----5--8------15--'​ +!------'​----5--8------15--'​ 
- STRPOS('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​1) &! на экране увидим 5 +STRPOS('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​1) &! на экране увидим 5 
- STRPOS('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​2) &! на экране увидим 8 +STRPOS('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​2) &! на экране увидим 8 
- STRPOS('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​3) &! на экране увидим 15+STRPOS('​+33-671-190-23-999',​ '​\+\d{1,​2}-(\d{3})((-\d+)+)',​3) &! на экране увидим 15
 </​sxh>​ </​sxh>​
-  Если подстрока с указанным номером отсутствует,​ то возвращается **0**.<​sxh qsp> +    ​* Если подстрока с указанным номером отсутствует,​ то возвращается **0**. <sxh qsp> 
- ! пытаемся отыскать числа в строке без чисел +! пытаемся отыскать числа в строке без чисел 
- STRPOS('​Восемь зелёных яблок в корзине','​\d+'​) &! на экране будет 0+STRPOS('​Восемь зелёных яблок в корзине','​\d+'​) &! на экране будет 0
 </​sxh>​ </​sxh>​
- * Ещё примеры:<​sxh qsp> +    ​* Ещё примеры:​ <sxh qsp> 
- STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 0) &! 1 +STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 0) &! 1 
- STRPOS('​ идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 0) &! 0 +STRPOS('​ идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 0) &! 0 
- STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 1)  &! 1 +STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 1)  &! 1 
- STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 2)  &! 6 +STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 2)  &! 6 
- STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 3)  &! 8 +STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 3)  &! 8 
- STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)(\s(\S+))?​$',​ 4) &! 8 +STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)(\s(\S+))?​$',​ 4) &! 8 
- STRPOS('​идти к дому',​ '​к\s(\S+)',​ 0) &! 6 +STRPOS('​идти к дому',​ '​к\s(\S+)',​ 0) &! 6 
- STRPOS('​идти к дому',​ '​к\s(\S+)'​) ​   &! 6 +STRPOS('​идти к дому',​ '​к\s(\S+)'​) ​   &! 6 
- STRPOS('​идти к дому',​ '​к\s(\S+)',​ 1) &! 8 +STRPOS('​идти к дому',​ '​к\s(\S+)',​ 1) &! 8 
- STRPOS('​идти к своему дому',​ '​к\s(\S+)',​ 1) &! 8+STRPOS('​идти к своему дому',​ '​к\s(\S+)',​ 1) &! 8
 </​sxh>​ </​sxh>​
-  ''​**ARRCOMP**([$имя_массива],​[$шаблон],​[#​начало])''​ - возвращает номер элемента массива ''​[$имя_массива]'',​ соответствующего регулярному выражению ''​[$шаблон]''​. Поиск начинается с элемента с номером ''​[#​начало]'';​ индексация элементов массива ведётся с нуля. Если указанное значение не найдено,​ функция возвращает **-1**. +  ​* ''​%%ARRCOMP([$имя_массива],​[$шаблон],​[#​начало])%%''​ - возвращает номер элемента массива ''​%%[$имя_массива]%%'',​ соответствующего регулярному выражению ''​%%[$шаблон]%%''​. Поиск начинается с элемента с номером ''​%%[#​начало]%%'';​ индексация элементов массива ведётся с нуля. Если указанное значение не найдено,​ функция возвращает **-1**. 
-  Поиск ​работает только по текстовым элементам массива ​имвол ''​$''​ в названии массива ​можно опустить). +    * Подробное описание функции ​с примерами в разделе "​[[help:​arrays|Массивы]]"​. 
- *  Параметр ''​[#начало]'' ​может отсутствовать, при этом он принимается равным **0**. + 
- *  Примеры:<​sxh qsp> +===== Операторы, ​использующие регулярные ​выражения ===== 
- !Поиск ​строки 'This' ​среди элементов массива "​$A"​ + 
- ARRCOMP('$A','​This',​0) +  * ''​%%SCANSTR [$имя_массива], [$текст_для_разбора], [$регэксп], ​[#номер_группы]%%'' ​— оператор ищет в строке ''​%%[$текст_для_разбора]%%'' ​непересекающиеся фрагменты, соответствующие регулярному выражению ​''​%%[$регэксп]%%'',​ и помещает их в массив ''​%%[$имя_массива]%%''​. Если параметр ''​%%[#​номер_группы]%%''​ указан и отличается от нуля, ​в массив ​помещается не весь фрагмент целиком, а лишь та его частькоторая ​соответствует группе с указанным номером
- !'​Поиск строки, соответствующей регулярному выражению ​"​abc\d+"​ +    * Подробное описание оператора и примеры использования в разделе "​[[help:​arrays|массивы]]"​.
- (первые два ​элемента массива игнорируются)' +
- ARRCOMP('$A','abc\d+',​2) +
- !'​аналогично ​предыдущему примеруно поиск осуществляется +
- по всем элементам ​массива+
- ARRCOMP('​$A','​.*string.*',​0)  +
- ARRCOMP('​$A','​This'​) &! эквивалентно 1му варианту +
-</​sxh>​ +
- *  Функция возвращает только ​числовой индекс элемента. Строковый или ​многомерный индекс с помощью ​данной функции получить нельзя.+
  
 ===== Как научиться писать регулярные выражения ===== ===== Как научиться писать регулярные выражения =====
Строка 93: Строка 83:
 Почитайте наш самоучитель по составлению регулярных выражений:​ Почитайте наш самоучитель по составлению регулярных выражений:​
  
- * [[regex:​start|Самоучитель по регулярным выражениям]]+  ​* [[regex:​start|Самоучитель по регулярным выражениям]]
  
 На канале,​ посвящённом написанию игр на QSP, есть отдельное видео по регуляркам:​ На канале,​ посвящённом написанию игр на QSP, есть отдельное видео по регуляркам:​
  
- * [[https://​youtu.be/​2ERAQw1M-yA|Уроки по QSP. Номер 23. Регулярные выражения]]+  ​* [[https://​youtu.be/​2ERAQw1M-yA|Уроки по QSP. Номер 23. Регулярные выражения]]
  
 Ещё есть прекрасное видео на канале Алекса Лущенко:​ Ещё есть прекрасное видео на канале Алекса Лущенко:​
  
- * [[https://​youtu.be/​_pLpx6btq6U|Не бойтесь регулярных выражений. Regex за 20 минут!]]+  ​* [[https://​youtu.be/​_pLpx6btq6U|Не бойтесь регулярных выражений. Regex за 20 минут!]]
  
 Полезные сайты: Полезные сайты:
  
-  [[https://​regexcrossword.com/|https://regexcrossword.com/]] +  ​* [[https://​regexcrossword.com|Игровое обучение регуляркам - regexcrossword.com]] 
- [[https://​regex101.com/​|https://regex101.com/]] +  * [[https://​regex101.com/​|Тестирование регулярок онлайн - regex101.com]] 
-  ​[[https://​regexper.com|https://regexper.com]] +  ​[[https://​regexper.com|Вводим свою регулярку и получаем объяснение - regexper.com]] 
-  ​[[https://​regexone.com|https://regexone.com]]+  ​[[https://​regexone.com|Обучающий материал на английском - regexone.com]]
  
 ===== Основные элементы синтаксиса регулярок в QSP ===== ===== Основные элементы синтаксиса регулярок в QSP =====
Строка 116: Строка 106:
 ==== Метасимволы ==== ==== Метасимволы ====
  
- * ''​**\**''​ — Экранирующий символ. +  ​* ''​%%\%%''​ — Экранирующий символ. 
- * ''​**|**''​ — Выбор из альтернатив "​или|или"​ +  * ''​%%|%%''​ — Выбор из альтернатив "​или|или"​ 
- * ''​**()**''​ — Группировка,​ т.е. задание групп +  * ''​%%()%%''​ — Группировка,​ т.е. задание групп 
- * ''​**[]**''​ — объединение символов в класс, например чётные цифры "​[02468]"​. Такое объединение считается за один символ.+  * ''​%%[]%%''​ — объединение символов в класс, например чётные цифры "​[02468]"​. Такое объединение считается за один символ.
  
 ==== Фиксаторы ==== ==== Фиксаторы ====
  
- * ''​**^**''​ — Начало строки +  ​* ''​%%^%%''​ — Начало строки 
- * ''​**$**''​ — Конец строки +  * ''​%%$%%''​ — Конец строки 
- * ''​**\b**''​ — Граница слова +  * ''​%%\b%%''​ — Граница слова 
- * ''​**\B**''​ — Не граница слова+  * ''​%%\B%%''​ — Не граница слова
  
 ==== Квантификаторы ==== ==== Квантификаторы ====
  
- * ''​*****''​ — 0 или более вхождений символа или группы. +  ​* ''​%%*%%''​ — 0 или более вхождений символа или группы. 
- * ''​**+**''​ — 1 или более вхождений символа или группы. +  * ''​%%+%%''​ — 1 или более вхождений символа или группы. 
- * ''​**?**''​ — 0 или 1 вхождение символа или группы. +  * ''​%%?%%''​ — 0 или 1 вхождение символа или группы. 
- * ''​**{n}**''​ — Ровно n вхождений символа или группы. +  * ''​%%{n}%%''​ — Ровно n вхождений символа или группы. 
- * ''​**{n,}**''​ — От n вхождений,​ и более, символа или группы +  * ''​%%{n,}%%''​ — От n вхождений,​ и более, символа или группы 
- * ''​**{,m}**''​ — От 0 до m вхождений символа или группы +  * ''​%%{,m}%%''​ — От 0 до m вхождений символа или группы 
- * ''​**{n,m}**''​ — От n до m вхождений символа или группы +  * ''​%%{n,m}%%''​ — От n до m вхождений символа или группы 
- +  * ''​%%*?%%''​ — "​Ленивое"​ ''​%%*%%''​ 
- * ''​***?**''​ — "​Ленивое"​ ''​*****''​ +  * ''​%%+?%%''​ — "​Ленивое"​ ''​%%+%%''​ 
- * ''​**+?**''​ — "​Ленивое"​ ''​**+**''​ +  * ''​%%??%%''​ — "​Ленивое"​ ''​%%?%%''​ 
- * ''​**??**''​ — "​Ленивое"​ ''​**?**''​ +  * ''​%%{n}?%%''​ — "​Ленивое"​ ''​%%{n}%%''​ 
- * ''​**{n}?**''​ — "​Ленивое"​ ''​**{n}**''​ +  * ''​%%{n,}?%%''​ — "​Ленивое"​ ''​%%{n,}%%''​ 
- * ''​**{n,}?**''​ — "​Ленивое"​ ''​**{n,}**''​ +  * ''​%%{,m}?%%''​ — "​Ленивое"​ ''​%%{,m}%%''​ 
- * ''​**{,m}?**''​ — "​Ленивое"​ ''​**{,m}**''​ +  * ''​%%{n,m}?%%''​ — "​Ленивое"​ ''​%%{n,m}%%''​
- * ''​**{n,m}?**''​ — "​Ленивое"​ ''​**{n,m}**''​+
  
 ==== Спецсимволы ==== ==== Спецсимволы ====
  
- * ''​**\t**''​ — Табуляция +  ​* ''​%%\t%%''​ — Табуляция 
- * ''​**\n**''​ — Перевод строки +  * ''​%%\n%%''​ — Перевод строки 
- * ''​**\r**''​ — Возврат каретки+  * ''​%%\r%%''​ — Возврат каретки
  
 ==== Спецсимволы предопределенных классов символов ==== ==== Спецсимволы предопределенных классов символов ====
  
- * ''​**.**''​ — Любой символ +  ​* ''​%%.%%''​ — Любой символ 
- * ''​**\w**''​ — Буква, цифры или символ подчёркивания +  * ''​%%\w%%''​ — Буква, цифра или символ подчёркивания 
- * ''​**\W**''​ — Не входит в ''​**\w**'',​ т.е. не буква, не цифра и не символ подчёркивания +  * ''​%%\W%%''​ — Не входит в ''​%%\w%%'',​ т.е. не буква, не цифра и не символ подчёркивания 
- * ''​**\s**''​ — Пробельный символ +  * ''​%%\s%%''​ — Пробельный символ 
- * ''​**\S**''​ — Не пробельный символ +  * ''​%%\S%%''​ — Не пробельный символ 
- * ''​**\d**''​ — Цифра +  * ''​%%\d%%''​ — Цифра 
- * ''​**\D**''​ — Не цифра +  * ''​%%\D%%''​ — Не цифра 
- * ''​**\h**''​ — Шестнадцатиричная цифра +  * ''​%%\h%%''​ — Шестнадцатиричная цифра ​(''​%%[ABCDEFabcdef0123456789]%%''​) 
- * ''​**\H**''​ — Не входит в **\h**, т.е. не шестнадцатеричная цифра+  * ''​%%\H%%''​ — Не входит в **\h**, т.е. не шестнадцатеричная цифра
  
 ==== Свойства символов ==== ==== Свойства символов ====
  
- * ''​**\p{имя свойства}**''​ Свойство +  ​* ''​%%\p{имя свойства}%%''​ Свойство 
- * ''​**\p{^имя свойства}**''​ Отрицание +  * ''​%%\p{^имя свойства}%%''​ Отрицание 
- * ''​**\P{имя свойства}**''​ Отрицание+  * ''​%%\P{имя свойства}%%''​ Отрицание
  
 Возможные названия свойств:​ Возможные названия свойств:​
Строка 174: Строка 163:
 **Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, Print, Punct, Space, Upper, XDigit, Word, ASCII** **Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, Print, Punct, Space, Upper, XDigit, Word, ASCII**
  
-Также поддерживаются обратные ссылки:​ ''​**\n**'',​ где ''​n''​ - номер группы +Также поддерживаются обратные ссылки:​ ''​%%\G%%'',​ где ''​%%G%%''​ - номер группы
- +
-[[help:​conditional|Вперёд:​ Условия]]+
  
 +[[help:​tuples|Вперёд:​ Кортежи]]
  
help/regexp.1672592833.txt.gz · Последние изменения: 2023/01/01 17:07 — aleks_versus