Regular Expressions
UTF-8 matchare: Bokstäver, märken, skiljetecken etc.
Sök…
Matchande bokstäver i olika alfabet
Exempel nedan ges i Ruby, men samma matchare bör finnas tillgängliga på alla moderna språk.
Låt oss säga att vi har strängen "AℵNaïve"
, producerad av Messy Artificial Intelligence. Den består av bokstäver, men generiska \w
matcher kommer inte överens mycket:
▶ "AℵNaïve"[/\w+/]
#⇒ "A"
Det rätta sättet att matcha Unicode-bokstaven med att kombinera märken är att använda \X
att ange ett grafeme-kluster. Det finns dock ett förbehåll för Ruby. Onigmo, regexmotorn för Ruby, använder fortfarande den gamla definitionen av ett grafeme-kluster . Det har ännu inte uppdaterats till Utvidgat Grapheme Cluster enligt definitionen i Unicode Standard Annex 29 .
Så för Ruby kan vi ha en lösning: \p{L}
kommer att göra nästan bra, förutom att det misslyckas med kombinerad diakritisk accent på i
:
▶ "AℵNaïve"[/\p{L}+/]
#⇒ "AℵNai"
Genom att lägga till ”Markeringssymbolerna” till uttrycket kan vi äntligen matcha allt:
▶ "AℵNaïve"[/[\p{L}\p{M}]+/]
#⇒ "AℵNaïve"