java - 匹配 ":"之后包含的字符串的正则表达式

标签 java regex

我需要使用 scan.useDelimiter() 来识别“:”之后发生的字符串。

我正在制作一个扫描仪,它从类似条目的列表中获取以下行。

c : 20002 : The Dragon :     Dreama : 10000 :   1 :  22 :   9 :  237.20 :   60.47 :  354.56

这是我到目前为止所拥有的:

    public Boolean readFile (){ //Fix tomorrow
    while ( input.hasNext () ) {
        char x =                stat.next().charAt(0);
        String line =           input.nextLine().trim();
        Scanner stat =          new Scanner(line).useDelimiter("\\s*:\\s*")

        if( line.length()== 0 || input.next().charAt(0) == '/' ) continue;
        switch ( x ) {
            case 'c' :
                int a =         stat.nextInt();
                String b =      stat.next();
                break;
            case 't' :
                //...

由于某种原因,我无法正确扫描。对于上面的条目,我需要以下字符串。

20002, The Dragon, Dreama, 10000, etc.

如您所见,我需要忽略短语边缘的空格,但如果短语之间有空格(例如“The Dragon”),则需要保留该空格。

以下问题对我没有帮助: Question 1/ Question 2

最佳答案

只需使用 String.split() :

String line = input.nextLine().trim();
String[] tokens = line.split("\\s*:\\s*");

请注意,我只是在您的问题中重复使用正则表达式。您的正则表达式将删除每个标记中所有多余的前导和尾随空格。仍然需要对整个输入进行 trim() 来删除前导空格和尾随空格,而 split() 方法中的正则表达式不匹配并且不会触及这些空格。

关于java - 匹配 ":"之后包含的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070085/

相关文章:

java - 如何在Android中显示特殊字符?

java.lang.NoClassDefFoundError 仅在特定条件下

mysql:最好的说法是 "the string up to the first instance of any of the following keywords"?

c# - 正则表达式问题(在asp.net MVC5中)

c++ - 电话号码的QRegularExpression

php - 解析自然语言

java - Intellij IDEA 打开大括号格式后出现空行

java - 如何以编程方式获取堆栈内存统计信息?

java - 屏蔽从控制台输入的密码:Java

regex - Sed:选择价格的第一部分