Wat zijn reguliere Linux-expressies?
Linux Regular Expressions zijn speciale tekens die helpen bij het zoeken naar gegevens en het matchen van complexe patronen. Reguliere expressies worden afgekort als 'regexp' of 'regex'. Ze worden gebruikt in veel Linux-programma's zoals grep, bash, hernoemen, sed, etc.
Soorten reguliere expressies
Laten we voor een beter begrip de verschillende soorten Regex een voor een leren.
- Basis reguliere expressies
- Interval Reguliere expressies
- Uitgebreide reguliere expressies
- Overzicht
Klik hier als de video niet toegankelijk is
Basis reguliere expressies
Enkele van de veelgebruikte commando's met reguliere expressies zijn tr, sed, vi en grep. Hieronder staan enkele van de standaard Regex.
Symbool | Beschrijvingen |
---|---|
| vervangt elk teken |
| komt overeen met het begin van de tekenreeks |
| komt overeen met het einde van de tekenreeks |
| komt nul of meer keer overeen met het voorgaande teken |
| Vertegenwoordig speciale karakters |
| Groepeert reguliere expressies |
| Komt overeen met precies één teken |
Laten we een voorbeeld bekijken.
Voer cat sample uit om de inhoud van een bestaand bestand te zien
Zoek naar inhoud die de letter 'a' bevat.
Laten we zoeken naar inhoud die BEGINT met een
Alleen regels die met een teken beginnen, worden gefilterd. Regels die aan het begin niet het teken 'a' bevatten, worden genegeerd.
Laten we naar een ander voorbeeld kijken -
Selecteer alleen de regels die eindigen op t met $
Interval Reguliere expressies
Deze uitdrukkingen vertellen ons over het aantal keren dat een teken in een string voorkomt. Zij zijn
Uitdrukking | Omschrijving |
---|---|
{n} |
Komt overeen met het voorgaande teken dat 'n' keer exact voorkomt |
{n, m} | Komt overeen met het voorgaande teken dat 'n' keer voorkomt, maar niet meer dan m |
{n,} | Komt alleen overeen met het voorgaande teken als het 'n' keer of vaker voorkomt |
Voorbeeld:
Filter alle regels uit die het teken 'p' bevatten
We willen controleren of het karakter 'p' exact 2 keer achter elkaar in een string voorkomt. Hiervoor zou de syntaxis zijn:
cat sample | grep -E p\{2}
Opmerking: u moet -E toevoegen met deze reguliere expressies.
Uitgebreide reguliere expressies
Deze reguliere expressies bevatten combinaties van meer dan één expressie. Sommige ervan zijn:
Uitdrukking | Omschrijving |
---|---|
|
Komt overeen met een of meer exemplaren van het vorige teken |
|
Komt overeen met nul of één exemplaar van het vorige teken |
Voorbeeld:
Zoeken naar alle tekens 't'
Stel dat we regels willen filteren waarbij teken 'a' voorafgaat aan teken 't'
We kunnen commando's gebruiken zoals
cat sample|grep "a\+t"
Brace-uitbreiding
De syntaxis voor het uitbreiden van accolades is een reeks of een door komma's gescheiden lijst van items tussen accolades "{}". De begin- en einditems in een reeks worden gescheiden door twee punten "…".
Een paar voorbeelden:
In de bovenstaande voorbeelden maakt de echo-opdracht strings met behulp van de accolade-uitbreiding.
Overzicht:
- Reguliere expressies zijn een reeks tekens die worden gebruikt om patronen in tekenreeksen te controleren
- Ze worden ook wel 'regexp' en 'regex' genoemd
- Het is belangrijk om reguliere uitdrukkingen te leren voor het schrijven van scripts
- Enkele standaard reguliere expressies zijn:
Symbool | Beschrijvingen |
---|---|
| vervangt elk teken |
| komt overeen met het begin van de tekenreeks |
| komt overeen met het einde van de tekenreeks |
- Enkele uitgebreide reguliere expressies zijn:
Uitdrukking | Omschrijving |
---|---|
| Komt overeen met een of meer exemplaren van het vorige teken |
| Komt overeen met nul of één exemplaar van het vorige teken |
- Enkele reguliere expressies voor intervallen zijn:
Uitdrukking | Omschrijving |
---|---|
{n} | Komt overeen met het voorgaande teken dat 'n' keer exact voorkomt |
{n, m} | Komt overeen met het voorgaande teken dat 'n' keer voorkomt, maar niet meer dan m |
{n,} | Komt alleen overeen met het voorgaande teken als het 'n' keer of vaker voorkomt |
- De accolade-uitbreiding wordt gebruikt om strings te genereren. Het helpt bij het maken van meerdere snaren uit één.