Перейти до вмісту

Regex з прикладів

Перетворіть приклади рядків у регулярний вираз і перевірте відповідність прикладів.

Введення
Приклади, яким паттерн НЕ повинен відповідати
Вихід

Regex з прикладів

Вставте кілька рядків, які повинен совпадати патерн — по одному на рядок — і цей інструмент виведе регулярний вираз, який захоплює їх спільну структуру. Під створеним патерном перелічені всі приклади з галочками, так що ви відразу бачите, покриває чи результат усе, що ви вставили.

Рівень узагальнення контролює, наскільки буквальним буде результат. «Точні символи» зберігає кожний символ і комбінує приклади різних форм з чередуванням. «Класи символів» заміняє цифри, букви та пробіли на \d, \p{Lu}/\p{Ll} та \s, зберігаючи точну кількість повторень з ваших прикладів. «Гнучкі квантифікатори» йде далі і перетворює ці послідовності на збіги «один або більше», що дає краще узагальнення, але збігається з більшою кількістю випадків, ніж ваші зразки. Якорі додають ^ та $, щоб весь рядок збігався, а не просто підрядок, врахування регістру контролює, чи має значення регістр букв, а іменовані групи оточують змінні частини патерну, щоб ви могли витягти їх за іменем пізніше. Опція діалекту регулює, як писати іменовані групи для JavaScript, PCRE або Python, оскільки ці три не узгоджуються щодо синтаксису.

Додайте рядки, які патерн НЕ повинен совпадати до другого поля, і інструмент перевірить створений патерн проти них — будь-який негативний приклад, який він все ще совпадає, буде позначений, що є найшвидшим способом знайти занадто широкий патерн. Увімкніть пояснення, щоб отримати патерн, розбитий на окремі частини з описанням кожної простою мовою.

Усе працює локально у вашому браузері: приклади, які ви вставляєте, негативні приклади та створений патерн ніколи не залишають ваш пристрій. Скопіюйте результат, завантажте його як файл .txt або надішліть вивід назад на вхід, щоб уточнити його з урахуванням більшої кількості прикладів.

FAQ

Сгенерований regex завжди совпадає з кожним прикладом, який я вставив?
Так — патерн будується безпосередньо з ваших прикладів, тому він розроблений так, щоб совпадати з усіма ними на обраному вами рівні суворості. Якщо ваші приклади мають принципово різні форми, інструмент повертається до совпадання будь-якої з відмінних форм.
Що саме змінює «класи символів»?
Він заміняє послідовності цифр, букв та пробілів на їх клас regex (\d, \p{Lu}, \p{Ll}, \s) замість буквальних символів, зберігаючи при цьому точну довжину, знайдену у ваших прикладах — так що «AB12» стає \p{Lu}{2}\d{2}, а не буквально «AB12».
Чому патерн також совпадає з одним з моїх негативних прикладів?
Негативний збіг зазвичай означає, що узагальнення ширше вашого наміру — спробуйте більш суворий рівень, увімкніть якорі або додайте більш конкретний негативний приклад, щоб відмічена лінія точно показала, що прошло.
Чи буде патерн працювати абсолютно однаково в Python чи PCRE?
Класи символів та квантифікатори спільні для всіх діалектів, але синтаксис іменованих груп відрізняється — опція діалекту регулює лише те, як ці групи відображаються (JavaScript використовує (?<name>…), PCRE та Python традиційно використовують (?P<name>…)); завжди тестуйте результат проти вашого реального рушія.
Мої приклади рядків завантажуються куди-небудь?
Ні. Патерн генерується повністю у вашому браузері — ваші приклади та сгенерований regex ніколи не залишають ваш пристрій.