killme2008 / killme2008/aviatorscript

表达式有\u等字符串编译报错

Aperta
#602 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Java
Stelle
5.2k
Fork
907
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

问题

我想注册一个函数 来实现自定义的正则匹配逻辑,函数是这样的:

 /**
     * 正则匹配
     *
     * @param str 字符串
     * @param reg 正则表达式
     * @param allMatches 是否全文匹配
     * @return 是否匹配
     */
    public static boolean matchPattern(String str, String reg, boolean allMatches) {
        if (StringUtils.isAnyEmpty(str, reg)) {
            return false;
        }
        Matcher matcher = Pattern.compile(reg).matcher(str);
        if (allMatches) {
            return matcher.matches();
        } else {
            return matcher.find();
        }

    }

当使用aviator表达式编译时 正则中的一些转义会抛出不支持的异常 比如这个表达式

return matchPattern('很好',  '[\u4e00-\u9fa5]{0,4}'); // 0-4个中文字符

其中\u会被解析器抛出无法识别异常

思路

请教下:如果移除源码中的 throw逻辑 ,可能会有哪些影响呢
com/googlecode/aviator/lexer/ExpressionLexer.java:394

image

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia in com/googlecode/aviator/lexer/ExpressionLexer.java intorno alla riga 394 e riproduci la compilazione dell’espressione matchPattern mostrata, che contiene un escape \u. Traccia il motivo per cui il lexer la rifiuta prima di decidere se sia necessario modificare la logica di throw. Il lavoro è completato quando l’espressione prevista viene compilata senza compromettere la gestione degli escape esistente e il comportamento viene verificato con un test di regressione appropriato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
compilers
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.