killme2008 / killme2008/aviatorscript
表达式有\u等字符串编译报错
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
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- 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