Без качване, 100% локално, без акаунт

Урок

Как да тествате regex, без да инсталирате нищо

Написали сте шаблон и трябва да разберете дали наистина съвпада с това, което очаквате, преди да го сложите в кода. Инсталирането на настолен инструмент или поставянето на личен дневник в случаен сайт е прекалено, а често и рисковано. Това ръководство показва как да изпълните regex върху собствения си текст направо в браузъра, да превключвате флаговете, които променят поведението, да прочетете прихващащите групи, които той извлича, и да видите съвпаденията осветени вградено, като шаблонът и текстът никога не напускат раздела ви.

Стъпка по стъпка

  1. Отворете тестера за regex и въведете шаблона си в полето между двете наклонени черти. Не пишете чертите сами: инструментът ги показва, за да виждате шаблона така, както го чете двигател. Поставете примерния си текст в полето отдолу, например няколко реда от дневник, списък с имейли или част от код, в който искате да търсите.
    Шаблон regex и низ с флагове, въведени в тестера, с примерен текст, поставен в полето отдолу
  2. Задайте флаговете в малкото поле до шаблона. Флагът g намира всяко съвпадение, вместо да спира на първото, i прави съвпадението нечувствително към малки и главни букви, m позволява на котвите ^ и $ да съвпадат с началото и края на всеки ред, а не на целия текст, s позволява на точката да съвпада и с нови редове. Комбинирайте ги свободно, например gim.
  3. Натиснете Тествай. Всяко съвпадение се осветява направо в текста ви, а списъкът отдолу показва всяко съвпадение с позицията му и стойността на всяка прихващаща група. Променете шаблона и го изпълнете отново: прегледът се обновява, така че да стесните шаблона, докато улавя точно това, което сте имали предвид, и нищо друго.
    Резултатът от теста: съвпадения, осветени вградено, и списък, показващ позицията на всяко съвпадение и неговите прихващащи групи

Прихващащи групи, именувани и номерирани

Прихващаща група е частта от шаблона ви, заградена в скоби, и точно чрез нея извличате парче от всяко съвпадение, вместо просто да потвърдите, че цялото нещо е съвпаднало. Номерираните групи се броят отляво надясно по отварящата си скоба: в (\d{4})-(\d{2})-(\d{2}) група 1 е годината, група 2 е месецът, група 3 е денят. Именуваните групи използват синтаксиса (?<name>...), така че (?<year>\d{4}) се чете далеч по-добре от гол номер, когато шаблонът расте. Ако искате само да групирате, без да прихващате, например за да приложите квантификатор върху няколко знака, използвайте неприхващаща група (?:...), за да не претрупва списъка ви с резултати. Тестерът показва стойността на всяка група за всяко съвпадение, което е най-бързият начин да потвърдите, че извличате точното парче.

Когато шаблон забие или се държи неправилно

Два проблема изникват отново и отново. Първият е катастрофалното връщане назад: шаблон като (a+)+$, изпълнен върху дълъг несъвпадащ низ, може да накара двигателя да опита експоненциален брой пътища и да замръзне. Тестерът изпълнява всеки тест в Web Worker с кратък надзорник, така че вместо забит раздел получавате ясно съобщение и можете да опростите шаблона, обикновено като направите квантификатора притежателен по дух, като го закотвите или като избегнете вложеното повторение. Вторият е алчно срещу мързеливо съвпадение: по подразбиране .* грабва колкото може повече, така че за да съвпаднете съдържанието на един отделен HTML маркер, искате мързеливата форма .*? вместо това. Ако сравнявате две леко различни версии на низ, за да видите към какво трябва да се цели шаблонът ви, инструментът за разлика в текста ги подрежда една до друга, така че разликата е очевидна, преди да напишете израза.

Как браузърът оценява вашия regex

Съвременните браузъри включват вграден ECMAScript regex двигател, поддържащ пълния набор от флагове: съвпадение без разлика на главни и малки букви (i), многоредов режим (m), dotAll (s), Unicode (u) и флага за sticky (y). Когато въведете шаблон в тестовия инструмент, двигателят го компилира в вътрешен NFA и го оценява спрямо тестовия низ в реално време, отчитайки всяка позиция на съвпадение и всички групи за захващане. Обратното проследяване се извършва локално на вашия CPU: шаблон като (a+)+ върху дълъг несъответстващ низ може да се завърти за секунди и виждането на това забавяне в браузъра е полезна обратна връзка, преди да разгърнете шаблона в производствен код. Никакъв текст не напуска страницата, така че можете да поставите примери от логове или какъвто и да е вход, без да го насочвате чрез сървър на трета страна.

Инструментите, използвани в това ръководство

Често задавани въпроси

Изпраща ли се моят шаблон или тестовият ми текст към сървър?

Не. Regex се изпълнява в Web Worker в собствения ви браузър, така че шаблонът и текстът, върху който тествате, остават в раздела. Това има значение, защото текстът, който поставяте, често е истински дневник, списък с клиенти или вътрешна конфигурация, точно онзи вид данни, които не искате на чужд сървър. Отворете панела Мрежа в инструментите за разработчици, докато натискате Тествай, и няма да видите нито една заявка да изнася текста ви навън. Освен това продължава да работи офлайн, след като страницата веднъж е заредена.

Кой вариант на regex използва тестерът?

Той използва двигателя за регулярни изрази на JavaScript, вграден в браузъра ви, същия, който работи в Node.js и във всяка уеб страница. Той покрива обичайния синтаксис: класове знаци, квантификатори, котви, редуване, номерирани и именувани прихващащи групи, поглед напред и поглед назад. Няколко възможности от други варианти, като рекурсия в стил Perl или притежателни квантификатори, не са част от двигателя на JavaScript, така че ако шаблон, който сте копирали от проект на PHP или Python, се държи различно, тази разлика във варианта обикновено е причината.

Източници