标记错误:java.util.regex.PatternSyntaxException,悬空元字符“*" [英] Tokenizing Error: java.util.regex.PatternSyntaxException, dangling metacharacter '*'

查看:30
本文介绍了标记错误:java.util.regex.PatternSyntaxException,悬空元字符“*"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 split() 按照以下格式对用 * 分隔的字符串进行标记:

I am using split() to tokenize a String separated with * following this format:

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

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

I'm reading this from a file named "entrada.al" using this code:

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();
    }

我收到了这个异常:

线程main"中的异常java.util.regex.PatternSyntaxException:在索引0附近悬空元字符'*'*

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

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

My guess is that the lack of a * after age on the original text file is causing this. How do I get around it?

推荐答案

不行,问题是 * 在正则表达式中是保留字符,需要转义.

No, the problem is that * is a reserved character in regexes, so you need to escape it.

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

* 表示前一个表达式的零个或多个"(请参阅​​ Pattern Javadocs),并且您没有为其提供任何先前的表达式,从而使您的拆分表达式非法.这就是错误是 PatternSyntaxException 的原因.

* means "zero or more of the previous expression" (see the Pattern Javadocs), and you weren't giving it any previous expression, making your split expression illegal. This is why the error was a PatternSyntaxException.

这篇关于标记错误:java.util.regex.PatternSyntaxException,悬空元字符“*"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆