/ / PatternSyntaxException usando o apache poi - java, android, regex, apache-poi

PatternSyntaxException usando o apache poi - java, android, regex, apache-poi

Estou usando o Apache POI em dois projetos diferentes

O primeiro projeto é um aplicativo Java independente. Tudo está bem aqui.

O segundo projeto é um projeto Android. Eu posso acessar a pasta de trabalho de um xlsx muito bem, mas quando se trata de avaliar fórmulas, ele cai com uma exceção

java.util.regex.PatternSyntaxException: U_ILLEGAL_ARGUMENT_ERROR P{IsL}
at java.util.regex.Pattern.compileImpl(Native Method)
at java.util.regex.Pattern.compile(Pattern.java:411)
at java.util.regex.Pattern.<init>(Pattern.java:394)
at java.util.regex.Pattern.compile(Pattern.java:381)
at org.apache.poi.ss.formula.functions.TextFunction$5.<init>(TextFunction.java:124)
at org.apache.poi.ss.formula.functions.TextFunction.<clinit>(TextFunction.java:123)

Esta é a linha de código em questão:

    final Pattern nonAlphabeticPattern = Pattern.compile("\P{IsL}");

Por que o Android não aceita isso? Como eu disse: ele está funcionando bem em um aplicativo Java independente ....

Respostas:

2 para resposta № 1

O Android está usando a biblioteca de regex ICU, que é um pouco diferente do mecanismo de regex Java.

Vejo esta referência:

Scripts Unicode, blocos, categorias e propriedades binárias são escritas com o p e P constrói como em Perl. p{prop} corresponde se a entrada tiver a propriedade prop, enquanto P{prop} não corresponde se a entrada tiver essa propriedade.

Assim, o padrão deve ser escrito como

Pattern nonAlphabeticPattern = Pattern.compile("\P{L}");