gpt4 book ai didi

java - 如何使用正则表达式分割特定行

转载 作者:行者123 更新时间:2023-12-01 18:03:27 25 4
gpt4 key购买 nike

我有以下字符串:

"body":"The Example 1",(sample),{sample},"sample",&sample,"body":"The Example 2",(sample),{sample},"sample",&sample

从上面的字符串中,我需要提取

  • “示例 1” 到变量 string1
  • “示例 2” 到变量 string2

我正在使用以下代码

 Pattern comment1 = Pattern.compile("(?<=\")(?:\\\\.|([\"body\"]))*(?=\")", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.DOTALL | Pattern.MULTILINE);
Matcher matchComm = comment1.matcher(responce.toString());

我没有得到正确的结果。

最佳答案

这样就可以了:

(?<=:")((?=",|"$)|.)+
  • (?<=:") :" 后面是肯定的目光.
  • (?=",|"$)是对 ", 的积极展望或"$哪里$标记行/文件的结尾。

演示:https://regex101.com/r/qT4oO6/2

编辑1:

以下代码可用于生成一个数组,其中数组中的每个位置都是与输入字符串的单独匹配。

String input = PUT YOUR STRING HERE!;
String pattern = "(?<=:\")((?=",|\"$)|.)+";
ArrayList<String> out = new ArrayList<String>();
Pattern p = Pattern.compile(pattern, Pattern.MULTILINE);
Matcher m = p.matcher(input);

while(m.find()){
out.add(m.group());
}

编辑2:

由于您在编写问题后澄清了您确实只想处理“body”标记后面的字符串,因此需要以下正则表达式:

(?<="body":")((?=",|"$)|.)+

此外,如果“body”标签后面的字段允许为空,则 +应该换成* :

(?<="body":")((?=",|"$)|.)*

关于java - 如何使用正则表达式分割特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38846493/

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