Witam. Mam taki problem - mam napisac regex ktory potrafi sie obchodzic ze znakami powyzej \uFFFF, ponizej kod (Groovy, ale latwo przeniesc):
import java.util.regex.*
def p = Pattern.compile('[\u10000 -\uEFFFF]+')
println p.pattern() // prints [က0-F]+
println p.matcher('0').matches() // true
println p.matcher('F').matches() // true
println p.matcher('abc').matches() // true
Wyniki sa zle, poniewaz oczekuje ze wszedzie bedzie false, bo przedzial ktory chce osiagnac nie zawiera zadnego ze znakow '0', 'F', 'a', 'b', 'c'. Problem wynika z tego, ze regex ktory jest tworzony to: \u1000 LUB 0-\uEFFF LUB F (jak widac w println p.pattern(), gdzie te kratki to znaki \u1000 i \uEFFF) poniewaz Java \u pozwala tylko na 4 znaki hex, a tu jest 5, i te 5 sa traktowane doslownie. Jak utworzyc w Javie regexa o ktory mi chodzi? Czy nie da sie?