java - 如何匹配由 "|e|"符号分割的字符串

标签 java regex string

我编写了一个程序,用 |o||e| 符号分割字符串。

这是我的整个字符串(我想要处理):

code|e|0.07610 |o| p|e|0.02225 |o| li|e|0.02032 |o| applet|e|0.01305 |o| pre|e|0.01289

我编写了一个实用函数来解析上面的字符串,以下是该实用函数的一部分:

String [] trs = tgs[1].split("[^ |o| ]"); //tgs[1] have the whole string
for (int i=0 ; i<9; i++) {
    String t = trs[i].split("[^|e|]")[0];
    e.add(new ProbTranslate(t, Double.parseDouble(trs[i].split("[^|e|]")[1])));
}

但这似乎是不正确的(因为我调试了程序然后得到了错误的结果)。我觉得我的错误在于不正确的正则表达式部分。所以我寻找一个合适的正则表达式来解析上面的字符串。

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

为了在正则表达式中引用特殊字符,Java提供了一个方法:java.util.regex.Pattern#quote

适用于上面的示例,这可以例如导致

import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        final String[] split1 = "code|e|0.07610 |o| p|e|0.02225 |o| li|e|0.02032 |o| applet|e|0.01305 |o| pre|e|0.01289".split(Pattern.quote(" |o| "));

        for (int i = 0; i < split1.length; ++i) {
            final String name = split1[i];
            final String[] split2 = name.split(Pattern.quote("|e|"));

            for (int j = 0; j < split2.length; ++j) {
                System.out.println(split2[j]);
            }

            System.out.println("");
        }
    }
}

输出:

code
0.07610

p
0.02225

li
0.02032

applet
0.01305

pre
0.01289

关于java - 如何匹配由 "|e|"符号分割的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41458444/

相关文章:

python - 使用全局标志进行 python RegExp 编译

java - 将字符串与文本进行匹配并存储下一个文本

python - Python在点上分割字符串,后跟空白

java - webservice...无法解析为类型

java - Junit 测试不能一次通过所有测试用例

java - 为什么我的程序会无休止地打印异常语句,给出错误的用户输入?

java - 最多一个字符的正则表达式匹配字符串

javascript - 如何扩展这个正则表达式以匹配这个掩码?

java - java中的字符串索引超出范围错误

java - 扩展 ArrayList 和创建新方法