Wat is Reguliere expressie (regex)?

Een notatie die een patroon van tekenreeksen uitdrukt door symbolen te combineren. . staat voor één willekeurig teken, * voor nul of meer herhalingen van het voorgaande element, ^ en $ voor het begin en het einde van een regel, en [abc] voor één van de tekens tussen de vierkante haken; reguliere expressies worden gebruikt om te zoeken en te vervangen in commando's zoals grep, sed en awk en in veel programmeertalen. De basale reguliere expressies (BRE) van grep en de uitgebreide reguliere expressies (grep -E, ERE), waarin +, ? en | direct kunnen worden gebruikt, behandelen sommige symbolen verschillend. Ze verschillen van de wildcards van de shell (zoals *.txt), en ook * heeft een andere betekenis.

Japanse benaming: 正規表現

“Reguliere expressie (regex)” komt voor in 4 oefenvragen uit 2 onderwerpen, bijv. Compilers, Basis van Linux en de opdrachtregel.

Vakgebied: Basis van Linux en de opdrachtregel

Nu oefenen: vragen over Reguliere expressie (regex)

Welke uitspraak over de rol van lexicale analyse in een compiler is juist?

  1. AEr wordt in de vorm van een boom gecontroleerd of de statements van het programma voldoen aan de grammatica van de taal
  2. BDe reeks tekens van de broncode wordt in tokens verdeeld, zoals identifiers en operatoren
  3. CEr wordt gecontroleerd of de types van variabelen kloppen en of geen ongedefinieerde namen worden gebruikt
Antwoord en toelichting tonen

Antwoord: B. De reeks tekens van de broncode wordt in tokens verdeeld, zoals identifiers en operatoren

Lexicale analyse is de eerste fase van de compiler en verdeelt bijvoorbeeld "count = count + 1;" in de tokens identifier count, symbool =, identifier count, symbool +, getal 1 en symbool ;. Ook witruimte en commentaar worden hier verwijderd. Omdat de regels voor tokens met reguliere expressies kunnen worden geschreven, kunnen ze snel met eindige automaten worden verwerkt. Het in boomvorm controleren van de grammatica is de taak van de volgende fase, parsing (syntactische analyse), en het controleren van types en namen is de taak van semantische analyse.

Wat wordt vaak gebruikt om de regels voor het herkennen van tokens bij lexicale analyse weer te geven?

  1. ADe regels voor afronding bij floating point
  2. BReguliere expressies en de eindige automaat die ze verwerkt
  3. CDe vervangingsregels van de cache
Antwoord en toelichting tonen

Antwoord: B. Reguliere expressies en de eindige automaat die ze verwerkt

Soorten tokens kunnen beknopt met reguliere expressies worden geschreven, zoals een identifier als "begint met een letter, gevolgd door letters en cijfers" en een getal als "een of meer cijfers". Een reguliere expressie kan worden omgezet in een eindige automaat (een machine met een eindig aantal toestanden), die door bij elk gelezen teken van toestand te wisselen tokens afsplitst in tijd evenredig met de lengte van de invoer. Lexers worden daarom vaak gemaakt met tools die ze automatisch uit reguliere expressies genereren. Afrondings- en cacheregels hebben niets met lexicale analyse te maken.

“Reguliere expressie (regex)” in de toelichting

Vragen met “Reguliere expressie (regex)” (4)

  1. Welke uitspraak over de rol van lexicale analyse in een compiler is juist?
  2. Wat wordt vaak gebruikt om de regels voor het herkennen van tokens bij lexicale analyse weer te geven?
  3. Welk soort grammatica wordt gebruikt om de grammatica van veel programmeertalen weer te geven en vormt de basis van parsing?
  4. Welke regels drukt de laatste grep in de bovenstaande sessie af?

Verwante termen

Lexicale analyse Syntactische analyse (parsing) grep Bestandsrechten (permissies) cron Git Harde link (hard link) inode Omgevingsvariabele (environment variable) Omleiding van invoer en uitvoer (I/O redirection)

Naar de woordenlijst