gpt4 book ai didi

Java正则表达式拆分文本(分隔符和顺序都可能未知)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:46 25 4
gpt4 key购买 nike

我正在尝试拆分像 "name:jack,berk,john;teacher:smith,jan;course:math;" 这样的文本,我希望结果包含 3 个子字符串 (或更少,取决于 'name' 'teacher' 'course') 的出现,即:

  • “姓名:jack,berk,john;”
  • “老师:smith,jan;”
  • “类(class):数学;”

但是标识符'teacher,name,course'的出现顺序不固定,可以是'course,name,teacher'也可以少一个或两个,就像只有“名称”标识符一样。

另外标识符之间的分隔符不固定,例子中是';',也可以是'、\\s,'

试了很多次都不行。

String str = "name:jack,berk,john;teacher:smith,jan;course:math;
str = str.replaceAll("(.*)(.)(name|teacher|course)(.*)(.)(name|teacher|course)(.*)", "$1--$3$4--$6$7");
System.out.println(str);

如有任何建议,我们将不胜感激。

最佳答案

编辑:不寻找特定分隔符的正则表达式。

与其拆分字符串,不如在这个正则表达式上进行匹配:

(name|teacher|course):(.+?)(?=\W*(?:name|teacher|course|$))

Working Demo

代码:

Pattern p = Pattern.compile("(name|teacher|course):(.+?)(?=\\W*(?:name|teacher|course|$))");
Matcher m = p.matcher(name:jack,berk,john;teacher:smith,jan;course:math;);
while (m.find()) {
System.out.println(m.group(1) + " :: " + m.group[2]);
}

关于Java正则表达式拆分文本(分隔符和顺序都可能未知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24134020/

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