lua-users home
lua-l archive

Re: folding double vowels?

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


It was thus said that the Great Petite Abeille once stated:
> Hello,
> 
> Brain freeze of the day… what would be a reasonable Lua string pattern to fold double vowels into one?
> 
> E.g.:
> 
> ao -> a
> ii -> i
> ue -> u
> 
> etc…
> 
> Got the following at the moment:
> 
> print( ( 'aaaa aaa aa a aaaaa' ):gsub( '([aeiou]?)([aeiou]?)', '%1' ))
> 
> > aa aa a a aaa
> 
> Is there a more straightforward way?
lpeg = require "lpeg"
Cf = lpeg.Cf
Cc = lpeg.Cc
C = lpeg.C
P = lpeg.P
pattern = Cf(
	Cc"" 
	* (P"ao" / "a" + P"ii" / "i" + P"ue" / "u" + C(P(1)))^1,
 function(a,b) return a .. b end
)
print(pattern:match("ao ii ue"))
 -spc

AltStyle によって変換されたページ (->オリジナル) /