Fickor i reguljära uttryck i JavaScript
Innehållet i fickor är tillgängligt inte bara i ersättningssträngen, utan också i själva det reguljära uttrycket: vi kan lägga något i en ficka och sedan i det reguljära uttrycket säga att innehållet från denna ficka ska stå här.
Innehållet i fickor är tillgängligt via deras nummer,
föregångna av ett omvänt snedstreck. Till exempel,
kommer den första fickan att vara tillgänglig så här: \1,
den andra fickan så här - \2, den tredje
- \3 och så vidare.
Jag är säker på att allt som skrivits ovan för närvarande är ganska oskärt för dig. Det är inte förvånande, eftersom fickor är den mest svårförståeliga delen av reguljära uttryck. Låt oss gå igenom det med exempel.
Exempel
Låt oss säga att vi har en sträng som ser ut så här:
let str = 'aa bb cd ef';
Låt oss hitta alla ställen i den där två likadana bokstäver står i rad. För att lösa problemet kommer vi att söka efter vilken bokstav som helst, lägga den i en ficka och sedan kontrollera om nästa tecken är innehållet i denna ficka:
let res = str.replace(/([a-z])\1/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'! ! cd ef'
Exempel
Låt oss säga att vi har en sträng som ser ut så här:
let str = 'asxca buzxb csgd';
Låt oss hitta alla ord i den där den första och sista bokstaven är lika. För att lösa problemet skriver vi följande mönster: bokstav, sedan en eller fler bokstäver, och sedan samma bokstav som den första:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Som ett resultat kommer följande att skrivas in i variabeln:
'! ! csgd'
Praktiska uppgifter
Given en sträng:
let str = 'aaa bbb ccc xyz';
Hitta alla delsträngar som innehåller tre likadana bokstäver i rad.
Given en sträng:
let str = 'a aa aaa aaaa aaaaa';
Hitta alla delsträngar som innehåller två eller fler likadana bokstäver i rad.
Given en sträng:
let str = 'aaa aaa bbb bbb ccc ddd';
Hitta alla delsträngar som innehåller två likadana ord i rad.