De Regex Tränare – interaktiva reguljära uttryck

Original: http://www.weitz.de/regex-coach/Made with Lisp

Abstrakt
Tillverkad med LispThe Regex Tränare är ett grafiskt program för Windows som kan användas för att experimentera med (Perl-kompatibla) reguljära uttryck interaktivt. Den har följande

 

Funktioner:

Det visar om ett reguljärt uttryck matchar ett särskilt mål sträng.
Det kan också visa vilka delar av målet strängen motsvarar fångade registergrupper eller till godtyckliga delar av det reguljära uttrycket.
Det kan “gå” genom målet strängen en match i taget.
Det kan simulera Perl split och s /// (substitution) operatörer.
Den försöker beskriva det reguljära uttrycket på ren svenska.
Det kan visa en grafisk representation av det reguljära uttrycket är parsträd.
Det kan i ett steg genom matchningsprocessen som utförs av regex motorn.
Allt som händer i “realtid”, det vill säga så fort du gör en ändring någonstans i ansökan alla andra delar är ständigt uppdaterad.

Om du hittar denna programvara användbar då kan du överväga att göra en liten donation till de pågående utvecklingskostnaderna. Webbsidor kostar pengar, som gör kompilatorer och utvecklingsverktyg.

 

Gör en säker donation via PayPal
mer …
Klicka på någon av PayPal bilderna att donera.

Innehåll

Nedladdning och installation
Äldre versioner, Linux, FreeBSD, Mac
License
Support, felrapporter, e-postlista
Hur man rapporterar buggar
Snabbstartsguide
(En italiensk version av handledningen är tillgängliga tack vare Lorenzo Marcon.)
Hur man använder regex Tränare
De viktigaste rutor
Meddelandeområdena
Belysa valda delar av matchen
Höjdpunkten knappar
Höjdpunkten meddelanden
Vandring genom målet strängen
Förträngning skann
Inforuta
De parseträd
Byte text
Klyvning text
Single-stepping genom matchningsprocessen
Modifierare
Ändra storlek
Spara till och lastning från filer
Auto.Rulln
Kända buggar och begränsningar
Teknisk information
Kompatibilitet med Perl
Tack

Nedladdning och installation
De Regex Tränare tillsammans med denna dokumentation kan laddas ner från http://weitz.de/files/regex-coach.exe. Den nuvarande versionen är 0.9.2 – se ändringsloggen för vad som är nytt. Filen (en installatör) är ungefär 2 MB i storlek.

Du bör använda Windows 2000 eller Windows XP med alla uppdateringar och service packs installerade. Programmet kan arbeta med äldre eller unpatched Windows-versioner, men förvänta dig inte stöd för dessa konfigurationer. Se även nedan.

Du måste också ha Microsoft körtidsbibliotek msvcr80.dll installerad. Om du inte har det, eller om du är osäker, kan du få det frånhttp://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en.

Om du har en tidigare version (0.8.5 eller tidigare) av The Regex Tränare installerad, avinstallera det först innan du installerar den nya versionen! Om du inte har gjort detta, och den nya ansökan kommer inte att starta, ta bort filen regex Coach.exe.manifest från programkatalogen.
Äldre versioner, Linux, FreeBSD, Mac
Från och med version 0.9.0, kommer det inte längre att vara en Linux-version av The Regex Tränare – för få människor använde det, och det är helt enkelt för mycket arbete för mig att behålla båda versionerna. Du kan fortfarande ladda den sista (numera stöds) Linux frigivning från http://weitz.de/files/regex-coach-0.8.5.tgz – Det kommer också att köras på FreeBSD, se dokumentation. I tillägg till detta, se dessa installations tips för att köra regex Tränare under Wine. Det finns också ett RPM för OpenSUSE 11.1 finns här tack vare Malcolm Lewis.

Om du har en äldre version av Windows och den nuvarande versionen av De Regex Tränare fungerar inte för dig, kan du prova den senaste utgåvan som byggdes med LispWorks 4.4.6 – det är på http://weitz.de/files /regex-coach-0.8.5.exe. Om det fungerar för dig – bra. Förvänta dig inte stöd eller uppdateringar, dock.

Det finns ingen Mac-version och jag har inga planer på att släppa en. Skicka mig e-post och tigger om det inte kommer att ändra på det. Och, nej, jag vill inte öppna källkod ansökan eller skicka källkoden till dig privat – du behöver inte be …

Men … det finns ett sätt att köra Windows-versionen på en Mac och här är hur man gör det. (Tack till Alec Clews för detta.)

Tack vare Lorenzo Gatti det finns också en ready-to-run (på 10,5) Vin-versionen här.

Jeremy Rayner har skrivit en “hyllning” till The Regex Tränare i Java – se här för mer information.

License
De Regex Coach är Copyright © 2003-2008 Dr Edmund Weitz – All Rights Reserved.

De Regex Coach är gratis för privat eller icke-kommersiellt bruk, men om du vill och använda den att det skulle vara trevligt om du kunde donera en liten summa för att finansiera fortsatt utveckling. De Regex Coach är också gratis för kommersiellt bruk, men du får inte omfördela den och / eller ta betalt för det utan skriftligt tillstånd från upphovsmannen – maila mig på [email protected] för detaljer.

Programmet tillhandahålls “i befintligt skick” utan garanti – använd på egen risk.

Support, felrapporter, e-postlista
Om du vill bli meddelad om nya releaser av regex Tränare du prenumerera på “regex-coach” postlista med hjälp av webb frontend på http://common-lisp.net/mailman/listinfo/regex-coach. Du kan söka i sändlistearkiv som använder denna Google Custom Search Engine.

Du bör också använda den här listan för frågor, felrapporter och önskemål om funktioner.

En serbokroatiska översättning av den här sidan genom Jovana Milutinovich finns på Webhostinggeeks.com, kan en Bulgariska Översättning hittas på Ajoft och en ukrainsk översättning gjordes av Artem Delik.
Hur man rapporterar buggar
Om du har hittat en bugg i The Regex Tränare, jag är glad om du rapportera det och jag ska försöka fixa det. Men följ följande procedur:

Se till att du använder den senaste versionen av De Regex Tränare på Windows. Äldre versioner och andra operativsystem stöds inte längre.
Se till att du har msvcr80.dll installerat – se ovan.
Se till att du inte har den gamla manifest filen längre – se ovan.
Informera om Windows-versionen (inklusive Service Pack) du använder.
Försök att minska problemet du stöter på ett enkelt, fristående testfall, så att jag kan återskapa felet lätt.
Skicka felrapporter på sändlistan och inte till mig privat. Jag kanske simpy ignorera rapporterna inte skickas till listan.
Om du har fem minuter, läsa denna text av Simon Tatham.

Om du tror att detta är för mycket begärt, kom ihåg att du får De Regex Tränare gratis och ingen betalar mig för att rätta fel eller svara på frågor. Om det är för mycket arbete för dig att skicka en anständig felrapport till rätt ställe, då tror jag det är bara rättvist om jag anser att det är för mycket arbete för mig att svara.

Hur man använder regex Tränare
De Regex Tränare kan du prova beteende Perl s reguljära uttryck operatörer (dvs. m //, s /// och split) interaktivt och i “realtid”, det vill säga så fort du gör ändringar någonstans resultaten visas direkt . Du kan också söka i regex motorn om valda delar av din vanliga uttryck och se hur den tolkar din input.

Naturligtvis bör denna ansökan också vara till nytta för programmerare som använder Perl-kompatibla regex verktygslådor som PCRE (som används av projekt som Python, Apache och PHP) eller CL-PPCRE. Även Javas reguljära uttryck och de av XML Schema är mycket lik Perl.

Följande beskrivningar kommer att använda begreppen införs genom detta kommenterad skärmdump. Bilden i sig är en imagemap – klicka på någon del av den för att gå direkt till det relevanta avsnittet i dokumentationen.

Screen Shot

De viktigaste rutor
Huvudområdet i ansökan bebodd av två rutor som alltid synliga. Båda beter sig som enkla redaktörer, dvs du kan skriva in text i dem och ändra det. Du kan också kopiera och klistra in text mellan dessa rutor och andra applikationer. I Windows, de tangentbindningar liknar de typiska Windows-redaktörer, på Linux de tangentbindningar är de av GNU Emacs. (Om du aldrig har använt Emacs du kanske känner ett par av dessa snabbtangenter från bash-skalet.) Du kan använda TAB-tangenten för att växla mellan dessa redaktörer. Denna cykel kommer också genom ersättning rutan om det är synligt.

Den övre rutan är regex fönstret. Här kommer du skriver det reguljära uttrycket som du vill undersöka.

Den andra rutan är målet fönstret. Här kommer du skriver text (målet sträng) det reguljära uttrycket kommer att försöka matcha.

Om det finns en match, den del av målet sträng som matchas kommer att betonas med en gul bakgrund. (Om du också kontrollera “g” modifier kryss alla matcher kommer att betonas . Den “aktuellaen i gult, de andra i grönt)
Meddelandeområdena
Båda de ovannämnda rutor har meddelandeområden direkt under dem. De regex meddelandeområdet är oftast tomma, men det kommer att visa ett felmeddelande i röda bokstäver om det reguljära uttrycket inte syntaktiskt korrekt. Det kommer också att visa en varning i grå bokstäver om innehållet i regex fönstret slutar med mellanslag eftersom detta kanske inte vad du vill. Du kan givetvis ignorera denna varning om du skrev de blanktecken med flit.

Målet meddelandeområdet kommer att visa omfattningen av matchen (eller meddela dig om att det inte finns en match alls). Detta är särskilt användbart om det finns en nollalängd match eftersom du inte ser några markerade tecknen i målet rutan i det här fallet. Meddelandet Match från n till minnebär att de tecken som börjar från position n upp till m (enbart) hör till matchen. Det första tecknet i strängen är tecknet 0 (noll) som vanligt.
Belysa valda delar av matchen
Om det finns en match kan du markera valda delar av matchen som visas i orange. Standardinställningen är att spegla val du gjort i regex fönstret. Det fungerar så här: Om du har valt en giltig deluttryck av det reguljära uttrycket i regex rutan motsvarande del av målet strängen visas i orange. Du ser ett exempel skärmen sköt ovan där “b” i det reguljära uttrycket valdes som motsvarar den fjärde “b” i målet strängen.

Om du har gjort en ogiltig urval höjdpunkten valknappen är inaktiverad. Du ser också ett budskap om ditt val är ogiltigt i info rutan.

Om du har ingen aning om vad en giltig deluttryckav det reguljära uttrycket kan vara överväga följande tumregel: Varje del av det reguljära uttrycket som kan vara insvept i en ickehämtade gruppen – dvs med (😕 ) utan att ändra innebörden av uttrycket är giltigt.

(En mer exakt beskrivning av detta skulle vara: Betrakta parse trädet av det reguljära uttrycket och antar att varje blad av trädet som är en sträng är dessutom uppdelad i de enskilda karaktärer som tillsammans utgör strängen Nu varje sammanhängande del av. reguljära uttryck som kan vara helt och exakt täckt av noderna i parse träd är en giltig deluttryck.)


Höjdpunkten knappar
Förutom att lyfta fram den del av målet strängen som motsvarar det markerade området i regex fönstret kan du också lyfta fram de delar som motsvarar fångade registergrupper (omges av parenteser) i det reguljära uttrycket. Detta görs genom att välja en av markeringsknapparna. Dessa är bara aktiverad om det finns några infångade register.

Tryck på ingenting” för att avaktivera lyfta.


Höjdpunkten meddelanden
Varje markera knapparna har en liten höjdpunkt meddelande i samband med det (liknande meddelandeområdet av målet rutan) som visar vilken del skulle lyftas fram om motsvarande knapp valdes. Återigen, detta är särskilt användbart i fallet med nolllängd (del-) matchningar.
Vandring genom målet strängen
Vanligtvis kommer programmet att försöka hitta den första matchen börjar från position 0 av målet strängen. Du kan använda skannings för att flytta framåt (eller bakåt) en match i taget, om det finns mer än en match. (Detta är hur Perl regex motorn skulle bete sig vid global” matcher det vill säga de med ett “g” modifier . Eller om du använder den delade operatören)

Rubriken ovanför skanningsknapparna som vanligtvis säger Skanna från 0ändras också visar ett meddelande som “Scan #n från m“, vilket innebär att regex motorn försöker hitta den n: te matchen börjar vid tecken m av målet strängen. Målet meddelandeområdet kommer att ändras också – det ska säga Match #n från k till li stället för Match från k till l(eller det ska säga Ingen ytterligare matchistället för No match” om du har tryckt på skanning framåt knappen för ofta).


Förträngning skann
Genom att använda gränsknapparna kan du begränsa skanningen till en del av målet strängen. Detta döljer effektivt tecken från början och / eller slutet av målet strängen från regex motorn. Tecknen som maskerade thusly är täckta med en mörkgrå färg i målet fönstret. Observera att effekten av de skanningsknapparna återställs genom gränsknapparna.


Inforuta
Välja Info” fliken kommer att avslöja info rutan som är ett område där programmet försöker förklara vad det reguljära uttrycket är tänkt att göra på ren svenska. Om du har valt en del av det reguljära uttrycket endast denna del kommer att förklaras.
De parseträd
Om du väljer Tree” fliken ser du en (förenklad) grafisk representation av parsträd av det reguljära uttrycket. Detta är hur regex motor “ser” uttrycket och det kan hjälpa dig att förstå vad som händer (eller varför det reguljära uttrycket inte tolkas som du tänkt att det ska vara).

Byte text
Genom att välja fliken Ersätt” du kommer att öppna upp ett område med två rutor. Den första innehåller en enkel editor som de i huvud rutorna. Här kan du skriva en ersättningssträng som fungerar som det andra argumentet till Perl s /// (substitution) operatör. Den andra rutan visar resultatet av substitution. Innehållet i dessa rutor är meningslösa om det reguljära uttrycket har syntaktiska fel.

Observera att du måste använda \ &“, “\` ,” \ “och” \ n istället för Perl s$ & ,” $ `“, “$“och” $ n se CLPPCRE dokumentation för de blodiga detaljerna.
Klyvning text
De Split” fliken kommer att avslöja en ruta som visar resultatet av att tillämpa Perl split operatör till målet strängen. Eftersom detta resultat är vanligtvis ett arrangemang av strängar elementen i denna matris är visuellt indelas genom vertikala linjer storleken på ett mellanslag. (Detta innebär att två vertikala linjer i rad anger att det finns en nollalängd sträng mellan dem. Och det följer också att matrisen har endast ett element om det finns någon vertikal linje alls.)

Du kan använda alternativknapparna nedanför rutan för att välja en annan avdelare om den vertikala linjen råkar vara en del av ditt mål strängen. Men observera att välja blocket” alternativet kan avsevärt bromsa programmet om din målgrupp strängar är långa.

Du kan skriva en ickenegativt heltal i Limit” fältet. Detta motsvarar det valfria tredje argumentet till Perl split operatör.
Singlestepping genom matchningsprocessen
Slutligen kommer Step” fliken leda dig till två rutor som har samma innehåll som de två huvud rutorna. Men här kan du titta på regex motor “på jobbet”. Detta förklaras bäst med ett exempel, se motsvarande del av handledningen.

Observera att många av de optimeringar som gjorts av CLPPCRE motor är avstängda här av pedagogiska skäl. (Till exempel, när man försöker matcha regex en * abc mot målet strängen aaaabd den “riktigamotor skulle inte ens starta eftersom det först kommer att använda en BoyerMooreHorspool ökning för att kontrollera om den ständiga strängen abc är någonstans i målet) Några av dem återstår dock:. motorn kommer endast försöka matcha från läge 0 om regex börjar med * och är i single-line läge.. Också, som du ser, försöker steg matcha konstant strängar som helhet (i stället för enstaka tecken som skulle vara ganska tråkigt).


Modifierare
Genom att trycka en av modifieringskryss motsvarar användning av motsvarande modifierings karaktär i Perl. Till exempel, växlar “i” kryssrutan mellan skiftlägeskänslig och skiftlägesokänslig matchning. Observera att “g” (global”) modifier påverkar endast utbytesoperation det har ingen effekt på matchen själv. Om den är aktiverad andra matcher motorn skulle hitta är markerade med grönt i målet rutan, dock.


Ändra storlek
Du kan ändra storlek på programfönstret som vanligt genom att dra det nedre högra hörnet. Men du kan också ändra storlek på rutor i förhållande till varandra genom att dra en av storleksändringsavdelare. Dessa är inte synlig i Windows-versionen, men du kommer att notera att markören ändras om du placerar musen över dem. Det finns också ett resize avdelare mellan de två ersättningsrutor. De Regex Tränare kommer ihåg storleken och positionen av dess huvudfönster mellan två anrop.


Spara till och lastning från filer
Om en av de två huvud rutorna har fokus du kan – från menyn Arkiv infoga innehållet i en textfil i den här rutan eller spara innehållet i denna ruta till disk. Det senare kan också göras genom att trycka Ctrls (eller Ctrlx Ctrls på Linux). Innehållet i dessa två rutor kommer också att förbli ihärdig mellan två anrop av regex Tränare.

OBS: På grund av det sätt Motif fungerar filen menyn kan inte användas så här på Linux. Istället kan du använda Emacs tangentsekvenser Ctrlx Ctrlw och Ctrlx i.
Auto.Rulln
De Regex Tränare har en Autoscroll funktion som kan slås av och på via motsvarande meny. Om Autoscroll är på, därefter varje gång målet strängen analyseras rullningslisten av målet rutan kommer att flyttas så att start (eller slutet beroende på vad du har valt) av matchen syns mer eller mindre i mitten av rutan. Om du har valt att lyfta fram specifika delar av matchen, rullningslisten kommer att flytta till början eller slutet av den markerade regionen istället. Detta är naturligtvis endast meningsfull om målet strängen är för stor för att passa in i rutan.

Ingen automatisk rullning sker medan målet rutan har inmatningsfokus.

Kända buggar och begränsningar
De regex Motorn kan ge upp med en stack overflow relativt långa reguljära uttryck. (Detta kommer att ske mycket tidigare som med CLPPCRE ensam som parsprocessen vävs samman med kod som är specifik för De Regex Tränare.) Även om kanske krånglig, kan det hjälpa att lägga till några icke-hämtade grupper, det vill säga aa abb b “(med tillräckligt många tecken emellan) kan misslyckas medan” (😕 aa a) (?: bb b) inte.

Dessutom verkar det finnas problem med östeuropeiska versioner av Windows, speciellt med teckenuppsättning 1250” eller liknande. Ledsen, jag tillfället inte har tid och resurser att utreda detta vidare.

Om du stöter på några andra buggar eller problem skicka dem gärna till sändlistan.
 
Teknisk information
De Regex Tränare är skriven i Common Lisp och har utvecklats med LispWorks utvecklingsmiljö. De regex motor som används är CLPPCRE.

Det kan vara värt att notera att på grund av den dynamiska karaktären av Lisp regex Tränare kunde skrivas utan att ändra en enda rad kod i CLPPCRE själva motorn trots att programmet har att spåra information och söka i motorn medan reguljära uttryck är analyserad och skannrar byggs. Allt detta kan göras i efterhand” genom att använda anläggningar som defadvice och: runt metoder. Tänk dig att skriva denna ansökan i Perl utan att röra Perl regex motor :)

Dessutom är tack vare LispWork s plattformsoberoende CAPI verktygslåda koden för Windows och Linux-versioner av nästan identiska utan plattformsspecifika delarna (med undantag för vissa linjer kring olika typsnitt och tangentbindningar).

Kompatibilitet med Perl
Se CLPPCRE dokumentation.

Tack
Skriptet för att sammanställa Windows installationsprogram tillhandahölls vänligen av Ian H. Ikonen för Windows-program skapades av André Derouaux. PNG medföljer Linux-distribution har bidragit med John Troy Hurteau och bygger på André ikon. De Lisp logotyp designades av Manfred Spiller. Tack vare Alex Wood för RPM informationen. Tack vare Jim Prewett för FreeBSD info.

Brigitte Bovy från LispWorks (Xanalys” på den tiden) stöd hjälpte till med knepiga interaktionen mellan redaktör rutorna. Jag fick också ett par användbara tips från sändlistan Lispworks, specifikt från Jeff Caldwell, John DeSoi, David Fox, och Nick Levine.

Tack vare killarna på Café Oléi Hamburg där jag skrev det mesta av koden.

Utveckling av De Regex Tränare har fått stöd av Euphemismen.de.

$ Huvud: /usr/local/cvsrep/regex-coach/doc/index.html,v 1,13 2014/10/05 12:18:00 edi Exp $