Problemet er velkendt for alle dem, der arbejdede med Henry Spencers regex-biblioteksimplementeringer:dovne kvantifikatorer bør ikke blandes sammen med grådige kvantifikatorer i én og samme gren da det fører til udefineret adfærd. TRE regex-motoren brugt i R viser den samme adfærd. Selvom du måske til en vis grad blander de dovne og grådige kvantificeringsapparater, skal du altid sørge for at få et ensartet resultat.
Løsningen er kun at bruge dovne kvantifikatorer i indfangningsgruppen:
select REGEXP_REPLACE('+000099,8420000', '^\+?(-?)0*([0-9]+?,[0-9]+?)0*$','\1\2') as Result from dual
Se onlinedemoen
[0-9]+?,[0-9]+?
del matcher 1 eller flere cifre, men så få gange som muligt efterfulgt af et komma og derefter 1 eller flere cifre, så få som muligt.
Nogle flere tests (vælg REGEXP_REPLACE('+00009,010020','[0-9]+,[0-9]+?([1-9])','\1') fra dobbelt giver
+20
) bevise, at den første kvantifier i en gruppe indstiller kvantificerende grådighedstype . I ovenstående tilfælde er gruppe 0 kvantifier grådighed sat til greedy ved den første ?
kvantifier og gruppe 1 (dvs. ([0-9]+?,[0-9]+?)
) grådighedstype indstilles med den første +?
(som er doven).