Java 使用正则表达式从字符串获取envelopeID

Java 使用正则表达式从字符串获取envelopeID,java,regex,Java,Regex,我有以下条件: "envelopeId": "fsadjhfkhdsgf", "ashgjkadsagagsalkjghsag": "gsajgks", "envelopeId": "fsadjhfkhdsgfgsd", "afshdj":"gas" 我需要从中提取出所有的信封ID。我尝试了不同的regex,但似乎没有任何效果 (?:“信封ID”)*(,) (?:“信封ID:”)*[\d\d](“,) 我正在尝试的正则表达式有什么问题?您可以使用 "envelopeId":\s*"([^"]+

我有以下条件:

"envelopeId": "fsadjhfkhdsgf", "ashgjkadsagagsalkjghsag": "gsajgks", "envelopeId": "fsadjhfkhdsgfgsd", "afshdj":"gas"
我需要从中提取出所有的
信封ID
。我尝试了不同的
regex
,但似乎没有任何效果

(?:“信封ID”)*(,)

(?:“信封ID:”)*[\d\d](“,)

我正在尝试的
正则表达式有什么问题?

您可以使用

"envelopeId":\s*"([^"]+)"
并提取
matcher.group(1)
值。看

详细信息

  • “信封ID”:
    -文字字符串
  • \s*
    -0+空格
  • -a
    字符
  • ([^“]+)
    -第1组:除
  • -一个
    字符
:

输出:

fsadjhfkhdsgf
fsadjhfkhdsgfgsd

您可以使用下面的代码从行字符串中提取
envelopeId
s。无论如何,不建议从json文本中提取json文本值。而不是使用json库来解析文本并通过键提取值

String line = "\"envelopeId\": \"fsadjhfkhdsgf\", \"ashgjkadsagagsalkjghsag\": \"gsajgks\", \"envelopeId\": \"fsadjhfkhdsgfgsd\", \"afshdj\":\"gas\"";
String pattern = "(?<=\"envelopeId\"\\: \")\\w+";

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(line);

while (m.find()) {
    System.out.println(m.group(0));
}
字符串行=“\'envelopeId\”:\'fsadjhfkhdsgf\”,\'ashgjkadsagagsalkjghsag\”:\'gsajgks\”,“envelopeId\”:'fsadjhfkhdsgfgsd\”,'afshdj\:'gas\”;

String pattern=“(?使用
”\“信封ID\”:\\s*\”([^\“]+)\”
字符串文字作为模式。抓取
匹配器。组(1)
对您有效吗?是的。有效。谢谢
String line = "\"envelopeId\": \"fsadjhfkhdsgf\", \"ashgjkadsagagsalkjghsag\": \"gsajgks\", \"envelopeId\": \"fsadjhfkhdsgfgsd\", \"afshdj\":\"gas\"";
String pattern = "(?<=\"envelopeId\"\\: \")\\w+";

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(line);

while (m.find()) {
    System.out.println(m.group(0));
}