gpt4 book ai didi

java - 标记化错误 : java. util.regex.PatternSyntaxException,悬空元字符 '*'

转载 作者:IT老高 更新时间:2023-10-28 20:28:36 25 4
gpt4 key购买 nike

我正在使用 split() 来标记用 * 分隔的字符串,格式如下:

name*lastName*ID*school*age
%
name*lastName*ID*school*age
%
name*lastName*ID*school*age

我正在使用以下代码从名为“entrada.al”的文件中读取此内容:

static void leer() {

try {
String ruta="entrada.al";
File myFile = new File (ruta);
FileReader fileReader = new FileReader(myFile);

BufferedReader reader = new BufferedReader(fileReader);

String line = null;

while ((line=reader.readLine())!=null){
if (!(line.equals("%"))){
String [] separado = line.split("*"); //SPLIT CALL
names.add(separado[0]);
lastNames.add(separado[1]);
ids.add(separado[2]);
ages.add(separado[3]);
}
}

reader.close();
}

我得到了这个异常(exception):

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 *

我的猜测是原始文本文件在年龄后缺少 * 导致了这种情况。我该如何解决?

最佳答案

不,问题是 * 是正则表达式中的保留字符,所以你需要转义它。

String [] separado = line.split("\\*");

* 表示“前一个表达式的零个或多个”(参见 Pattern Javadocs ),并且您没有给它任何前一个表达式,从而使您的拆分表达式非法。这就是错误是 PatternSyntaxException 的原因。 .

关于java - 标记化错误 : java. util.regex.PatternSyntaxException,悬空元字符 '*',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/917822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com