{
    "componentChunkName": "component---src-templates-doc-page-js",
    "path": "/docs/ru/Patterns/base_patterns/",
    "result": {"data":{"site":{"siteMetadata":{"title":"Gatsby-doc-engine"}},"markdownRemark":{"id":"5ba7f7cc-f029-5e2c-b947-ffcac658eff2","excerpt":"Базовые элементы паттернов *  — любые символы в любом количестве. Использование в сценарии слово  — слово: проверяет наличие последовательности указанных…","html":"<h1>Базовые элементы паттернов</h1>\n<hr>\n<h2>*</h2>\n<p><code class=\"language-text\">*</code> — любые символы в любом количестве.</p>\n<h3>Использование в сценарии</h3>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">state:</span> catchAll\n    <span class=\"token storageType\">q!:</span> *\n    <span class=\"token variableParameter\">a:</span> Я Вас не понял.</code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">state:</span> start\n    <span class=\"token storageType\">q!:</span> *\n    <span class=\"token variableParameter\">a:</span> Начинаем работу!\n    <span class=\"token variableParameter\">go!:</span> /SecondStep</code></pre></div>\n<h2>слово</h2>\n<p><code class=\"language-text\">слово</code> — слово: проверяет наличие последовательности указанных символов.</p>\n<p>Если клиент введет дополнительные символы (слова), его ответ не будет соотнесен с паттерном.</p>\n<h3>Использование в сценарии</h3>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">state:</span>\n    <span class=\"token storageType\">q!:</span> привет\n    <span class=\"token variableParameter\">a:</span> Привет! Как дела?</code></pre></div>\n<p>Если клиент отправит или скажет боту <code class=\"language-text\">Бот, привет</code>, то его ответ не будет соотнесен с паттерном <code class=\"language-text\">привет</code>.</p>\n<h2>* корень *</h2>\n<p><code class=\"language-text\">*корень*</code> — стемма: проверяет наличие в слове заданного текста.</p>\n<p>Звёздочки могут находиться:</p>\n<ul>\n<li>В начале, обозначает вариативный префикс: в паттерн <code class=\"language-text\">*ход</code> попадут слова <code class=\"language-text\">вход</code>, <code class=\"language-text\">выход</code>, <code class=\"language-text\">ход</code>.</li>\n<li>В конце, обозначает  вариативный суффикс: в паттерн <code class=\"language-text\">ход*</code> попадут слова <code class=\"language-text\">ходить</code>, <code class=\"language-text\">ходунки</code>, <code class=\"language-text\">ход</code>.</li>\n<li>В начале и конце, обозначает вариативные префикс и суффикс: в паттерн <code class=\"language-text\">*ход*</code> попадут слова <code class=\"language-text\">выходить</code>, <code class=\"language-text\">ход</code>.</li>\n</ul>\n<h3>Использование в сценарии</h3>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"> <span class=\"token keyword\">state:</span>\n    <span class=\"token storageType\">q:</span> * *подроб* *   //будет ловить: поподробнее, подробности, подробнее\n    <span class=\"token variableParameter\">a:</span> Подробнее на сайте example.cn</code></pre></div>\n<h2>(слово1|слово2|или целая фраза)</h2>\n<p><code class=\"language-text\">(слово1|слово2|или целая фраза)</code> — альтернативы: проверяет наличие одного из вариантов правила.</p>\n<p>Варианты разделяются <code class=\"language-text\">|</code>. Внутри каждого из них могут содержаться любые другие вложенные элементы паттерна.</p>\n<p class='warn'>Варианты также можно разделять символом <code class=\"language-text\">/</code>.</p>\n<h3>Использование в сценарии</h3>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">state:</span>\n    <span class=\"token storageType\">q:</span> (привет | добр* (утро/день/вечер) | здравствуй* )\n    <span class=\"token variableParameter\">a:</span> Привет-привет!</code></pre></div>\n<h2>[опциональное слово|или другая фраза]</h2>\n<p><code class=\"language-text\">[опциональное слово|или другая фраза]</code> — опции: приведенные в квадратных скобках элементы не являются обязательными.</p>\n<p>У паттерна увеличивается вес, если правило сработало.</p>\n<p>Внутри опций можно использовать альтернативы.</p>\n<h3>Использование в сценарии</h3>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">state:</span> How many players\n    <span class=\"token storageType\">q:</span> * {(сколько|как много|насколько много) (игроков|плееров|человек) [могут] [играть]} *\n    <span class=\"token storageType\">q:</span> * [игра] для одного * [или] [нескольких] *\n    <span class=\"token storageType\">q:</span> * {([игра]|в игре) [есть] (мультиплеер*|многопользовательск* [режим]|для нескольких пользовател*)} *\n    <span class=\"token variableParameter\">a:</span> Это приключение для одного.</code></pre></div>\n<h2>{слово1 слово2 (1|2)}</h2>\n<p><code class=\"language-text\">{слово1 слово2 (1|2)}</code> — перестановки: проверяется соответствие заданных правил в любой последовательности.</p>\n<p>Правила, которые могут быть перемешаны, разделяются пробелом.</p>\n<p>Каждое правило может быть любым другим элементом паттерна с любой степенью вложенности.</p>\n<h3>Использование в сценарии</h3>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">state:</span> How much gameplay\n    <span class=\"token storageType\">q:</span> * {(сколько|(как|насколько) много|много) геймпле*} *\n    <span class=\"token storageType\">q:</span> * {[насколько] (большая|велика) [ли] [эта] [игра]} *\n    <span class=\"token variableParameter\">a:</span> Сюжет игры занял 2 тысячи страниц сценария!</code></pre></div>\n<h3>Ограничения</h3>\n<p class='tip'>В перестановках допустимо использовать не более 5–6 правил. Использование большего числа элементов существенно замедляет работу бота.</p>\n<p class='warn'>Если вы хотите учесть вариативный порядок слов, рекомендуется использовать группировки для объединения словосочетаний, где порядок слов фиксирован, а также разбивать паттерн на несколько отдельных паттернов.</p>\n<p>Например, паттерн <code class=\"language-text\">* {какое * ты * к этому имеешь отношение} *</code> можно переписать с использованием паттернов следующего вида:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">* {какое * ты} * {(к этому) имеешь отношение} *\n* какое * {(к этому) имеешь отношение} * ты *</code></pre></div>","frontmatter":{"title":"","description":null},"headings":[{"value":"Базовые элементы паттернов"}]}},"pageContext":{"slug":"/docs/ru/Patterns/base_patterns/","previous":{"fields":{"slug":"/docs/ru/Patterns/converters/"},"frontmatter":{"title":"","description":null}},"next":{"fields":{"slug":"/docs/ru/Patterns/about_patterns/"},"frontmatter":{"title":"","description":null}}}},
    "staticQueryHashes": ["1209419333"]}