Trädvy Permalänk
Medlem
Plats
Gävle
Registrerad
Sep 2005

Regexfråga

Jag vill kunna kolla ifall den sista bokstaven i en sträng förekommer mer än en gång i strängen. Hur kan jag få till detta.
Jag har försökt med .+(.$){2,} och liknade med får inte till det.

Trädvy Permalänk
Legendarisk
Hedersmedlem
Plats
::1
Registrerad
Dec 2002

@burton666: Så här?

(.)(?=.*\1$)

aaa abc accdef affdef

https://regex101.com/r/a6sGM3/1

Abstractions all the way down.

Trädvy Permalänk
Medlem
Plats
Gävle
Registrerad
Sep 2005

@Biberu:
tack, men ytterligare en dum fråga. Hur gör jag för att returnera hela strängen vid matching istället för bara själva bokstaven?

Trädvy Permalänk
Legendarisk
Hedersmedlem
Plats
::1
Registrerad
Dec 2002

@burton666: Frågan är om det inte är tydligast att använda din inputvariabel om det ändå är den du vill ha kvar, men du kan göra på det här sättet:

(^.*(.)(?=.*\2$).*$)

aaa abc accdef affdef

https://regex101.com/r/CYn1cm/1


Förklaring: Det inre mönstret testar ett tecken åt gången och använder en lookahead ((?= ...)) för att kontrollera om det följs av noll eller flera tecken (.*) samt sig själv (\2 är en backreference till den andra gruppen ((.)) – det egna tecket) och strängens slut ($).

Abstractions all the way down.