gpt4 book ai didi

java - 如何拆分包含多个键值对的字符串

转载 作者:行者123 更新时间:2023-11-30 04:18:26 24 4
gpt4 key购买 nike

我有一个字符串:

Single line : Some text
Multi1: multi (Va1) Multi2 : multi (Va2) Multi3 : multi (Val3)
Dots....20/12/2013 (EOY)

我正在尝试检索所有键值对。我的第一次尝试

(单行|多[0-9]{1}|点)( *:? [.] *| *:? )(.)

似乎可以工作,但不能在一行上处理多个键值对。有什么办法可以实现这一点吗?

最佳答案

试试这个:

String text = "Single line : Some text\r\n" + 
"Multi1: multi (Va1) Multi2 : multi (Va2) Multi3 : multi (Val3)\r\n" +
"Dots....20/12/2013 (EOY)";
Pattern pattern = Pattern.compile("(\\p{Alnum}[\\p{Alnum}\\s/]+?)\\s?(:|\\.+)\\s?(\\p{Alnum}[\\p{Alnum}\\s/]+?)(?=($|\\()|(\\s\\())", Pattern.MULTILINE);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group(1) + "-->" + matcher.group(3));
}

输出:

Single line-->Some text
Multi1-->multi
Multi2-->multi
Multi3-->multi
Dots-->20/12/2013

说明:

  • 我将键和值限制为“以字母数字开头”,“包含任意数量的字母数字、空格或斜杠”。
  • 我将分隔符限制为“可选空格、:、可选空格”或“可选空格,任意数量的连续点,可选空格”。
  • 我使用组 1 和组 3 来定义模式
  • 第 2 组用于提供如上所述的备用分隔符。
  • 最后,Pattern 在末尾进行分隔,或者使用新的行,或者带有一个开放的圆括号,或者带有一个空格,后跟一个打开圆括号。

请注意,您不能在前向或后向组中使用量词,因此会出现重复。

关于java - 如何拆分包含多个键值对的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750572/

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