Руководство по регулярным выражениям (Regex): различия между версиями

Материал из SS220 Paradise Wiki (SS13)
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 1: Строка 1:
{{wip
{{wip
|assign = Tizer7}}
|assign = Tizer7}}
Regex (сокр. Regular expressions - Регулярные выражения) - это способ поиска подтекста в тексте. Он позволит вам искать более сложные выражения и даст вам больше свободы в выборе того, что выделить. Однако он немного сложен для полного понимания за один раз. Смотрите в Примерах несколько простых в использовании строк regex. По умолчанию в игре regex нечувствителен к регистру.
Regex (сокр. от Regular expressions - Регулярные выражения) - это способ поиска подтекста в тексте. Он позволит вам искать более сложные выражения и даст вам больше свободы в выборе того, что выделить. Однако он немного сложен для полного понимания за один раз. Смотрите ниже примеры использования строк regex. По умолчанию в игре regex нечувствителен к регистру.
 


Полезным инструментом для тестирования вашей regex-строки является [https://regex101.com/ '''этот сайт.''']
Полезным инструментом для тестирования вашей regex-строки является [https://regex101.com/ '''этот сайт.''']
==Настройка==
==Настройка==
Чтобы открыть окно настроек Regex нажмите шестеренку в окне чата. И в появившемся списке кликните '''highlight string.'''
Чтобы открыть окно настроек Regex нажмите шестеренку в окне чата. И в появившемся списке кликните '''highlight string.'''
 
[[Файл:Regex1.png|без|обрамить|Как добраться до Regex]]
[[Файл:Regex1.png|безрамки|399x399пкс]]
 
 
Игра предоставляет вам два способа использования системы регулярных выражений.
Игра предоставляет вам два способа использования системы регулярных выражений.
===Простой способ===
===Простой способ===
[[Файл:Regex2.png|мини|591x591пкс|Пример простого ввода]]
[[Файл:Regex2.png|мини|591x591пкс|Пример простого ввода]]


Убедитесь, что чекбокс '''Enable Regex''' выключен. И просто вводите, в одно из полей, через пробел, желаемые слова, которые хотите выделить в чате. Этот способ наиболее элементарный. Но имеет недостатки.


Убедитесь, что чекбокс '''Enable Regex''' выключен. И просто вводите, в одно из полей, через пробел, желаемые слова, которые хотите выделить в чате. Этот способ наиболее понятный и элементарный. Но имеет недостатки. Например введя слово '''маг,''' он будет выделять часть слова '''<mark>Маг</mark>омед''' и любых других слов содержащих указанную последовательность букв. А также чувствителен к орфографическим ошибкам. Если вы зададите для выделения слово '''детектив,''' а в чате будет написано '''декектив,''' то оно выделено не будет. Если вам это не по душе, то используйте регулярные выражения ниже.
Существует непреодолимый недостаток системы Regex, на текущий момент, это выделение части букв из других слов. Например введя слово '''маг,''' он будет выделять часть слова '''<mark>Маг</mark>омед, бу<mark>маг</mark>а''' и любых других слов содержащих указанную последовательность букв. А также чувствителен к орфографическим ошибкам. Если вы зададите для выделения слово '''детектив,''' а в чате будет написано '''декектив,''' то оно выделено не будет.  
 
Отчасти, справиться с этими недостатками можно используя регулярные выражения ниже.


===Сложный способ===
===Сложный способ===
Строка 33: Строка 30:
'''+''' - ищет любое количество символов согласно предыдущему выражению. В данном случае это значит, что между символами '''В''' и '''П''' может быть любое количество, любых символов исключая пробелы.
'''+''' - ищет любое количество символов согласно предыдущему выражению. В данном случае это значит, что между символами '''В''' и '''П''' может быть любое количество, любых символов исключая пробелы.


Фактически для данное выражение можно представить так: '''в*п*р''' где, '''*''' - это любые символы (кроме пробела), в любом количестве.
Фактически для данное выражение можно представить так: '''в*п*р''' где, * - это любые символы (кроме пробела), в любом количестве.
[[Файл:Regex3.png|без|обрамить|Пример работы Regex рассчитанный на слово "вампир"]]


[[Файл:Regex3.png|безрамки|589x589пкс]]
==== Комбинация Regex выражений ====
Если вы решите создать много Regex выражений для названий антагонистов и их сленг-синонимов, то строк представленных в окне Regex вам не хватит. Для решения указанной проблемы можно комбинировать множество выражений в одной строке:


'''[^ ]+н[^ ]+к[^ ]+д''' - выражение для слова '''генокрад.'''
Пример комбинирования для слов '''вампир''' и '''генокрад:''' (в[^ ]+п[^ ]+р|[^ ]+н[^ ]+к[^ ]+д)
 
==Примеры==


==== Таблица готовых Regex выражений ====
[[Category:Guides]]
[[Category:Guides]]
{| class="wikitable" style="text-align: center;"
{| class="wikitable" style="text-align: center;"
|+Таблица с регулярными выражениями для наиболее часто употребляемых слов
(будет пополняться, возможно)
|- style="font-weight: bold; text-align: center; background-color: chocolate; color: white;"
|- style="font-weight: bold; text-align: center; background-color: chocolate; color: white;"
| style="width: 250pt; center;" |Описание
| style="width: 250pt; center;" |Слово для выделения
| style="width: 150pt; center;" |Regex синтаксис
| style="width: 150pt; center;" |Regex синтакс
| style="width: 150pt; center;" |Пример regex
| style="width: 150pt; center;" |Пример вывода
|-
|-
!Выделите множество подтекстов, которые начинаются с заданного текста
!'''генокрад'''
|\b(word1<nowiki>|</nowiki>word2)
|[^ ]+н[^ ]+к[^ ]+д
|<nowiki>\b(Привет|генокрад)</nowiki>
|Привет прекрасным <mark>мир</mark>ам! ппривет
|-
|-
!Выделите несколько подтекстов, которые должны полностью соответствовать заданному тексту
!'''вампир'''
|\b(word1<nowiki>|</nowiki>word2)\b
|в[^ ]+п[^ ]+р
|\b(hello<nowiki>|</nowiki>world)\b
|<mark>hello</mark> beautiful worlds! hhello
|-
|-
!Выделите слово с произвольным (не нулевым) количеством символов в одном месте
!
|word+
|
|ca+ptain
 
|<mark>Caaaaaaaaaaaptain</mark>! <mark>captain</mark> nukies onboard!
[[Category:Guides]]
|}
|}
===Цвет===
В нижней части окна предоставлена возможность изменить цвет выделения слов. Ввод цвета производится в [[google:цвет+шестнадцатеричный+код|'''шестнадцатеричной системе (HEX)''']]. Цвета можно подобрать по этой [[ColorPalette|'''ссылке''']].

Версия от 12:53, 3 декабря 2021

Cone.pngЭта страница находится на плановых ремонтных работахCone.png
Пожалуйста, согласуйте ваши правки с подрядчиком:
Wrench.png Tizer7

Regex (сокр. от Regular expressions - Регулярные выражения) - это способ поиска подтекста в тексте. Он позволит вам искать более сложные выражения и даст вам больше свободы в выборе того, что выделить. Однако он немного сложен для полного понимания за один раз. Смотрите ниже примеры использования строк regex. По умолчанию в игре regex нечувствителен к регистру.

Полезным инструментом для тестирования вашей regex-строки является этот сайт.

Настройка

Чтобы открыть окно настроек Regex нажмите шестеренку в окне чата. И в появившемся списке кликните highlight string.

Как добраться до Regex

Игра предоставляет вам два способа использования системы регулярных выражений.

Простой способ

Пример простого ввода

Убедитесь, что чекбокс Enable Regex выключен. И просто вводите, в одно из полей, через пробел, желаемые слова, которые хотите выделить в чате. Этот способ наиболее элементарный. Но имеет недостатки.

Существует непреодолимый недостаток системы Regex, на текущий момент, это выделение части букв из других слов. Например введя слово маг, он будет выделять часть слова Магомед, бумага и любых других слов содержащих указанную последовательность букв. А также чувствителен к орфографическим ошибкам. Если вы зададите для выделения слово детектив, а в чате будет написано декектив, то оно выделено не будет.

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

Сложный способ

Сложный способ подразумевает использование синтаксиса регулярных выражений. Все доступные регулярные выражения представлены в справочнике BYOND Regex

Ниже будут приведены полезные для игры примеры.

в[^ ]+п[^ ]+р - хорошее регулярное выражение для выделения слова вампир.

Разберём это выражение подробнее:

[^ ] - выражение которое ищет любой символ исключая пробел

+ - ищет любое количество символов согласно предыдущему выражению. В данном случае это значит, что между символами В и П может быть любое количество, любых символов исключая пробелы.

Фактически для данное выражение можно представить так: в*п*р где, * - это любые символы (кроме пробела), в любом количестве.

Пример работы Regex рассчитанный на слово "вампир"

Комбинация Regex выражений

Если вы решите создать много Regex выражений для названий антагонистов и их сленг-синонимов, то строк представленных в окне Regex вам не хватит. Для решения указанной проблемы можно комбинировать множество выражений в одной строке:

Пример комбинирования для слов вампир и генокрад: (в[^ ]+п[^ ]+р|[^ ]+н[^ ]+к[^ ]+д)

Таблица готовых Regex выражений

Таблица с регулярными выражениями для наиболее часто употребляемых слов (будет пополняться, возможно)
Слово для выделения Regex синтакс
генокрад [^ ]+н[^ ]+к[^ ]+д
вампир в[^ ]+п[^ ]+р

Цвет

В нижней части окна предоставлена возможность изменить цвет выделения слов. Ввод цвета производится в шестнадцатеричной системе (HEX). Цвета можно подобрать по этой ссылке.