Java正则表达式:从多次出现的模式中提取子字符串

Java正则表达式:从多次出现的模式中提取子字符串,java,regex,Java,Regex,对不起,如果这是一个蹩脚的问题,我对Java开发和regex模式非常陌生 基本上,我有一个长字符串,它有多个子字符串,如InstanceId:I-1234XYAadsadd,,我想使用regex提取I-1234XYAadsadd数组列表中的I-1234XYAadsadd部分。请在此处帮助使用正确的正则表达式 //instanceResultString is the actual string containing occurences of pattern List<String>

对不起,如果这是一个蹩脚的问题,我对Java开发和regex模式非常陌生

基本上,我有一个长字符串,它有多个子字符串,如
InstanceId:I-1234XYAadsadd,
,我想使用regex提取
I-1234XYAadsadd
数组列表中的
I-1234XYAadsadd
部分。请在此处帮助使用正确的正则表达式

//instanceResultString is the actual string containing occurences of pattern
List<String> instanceIdList = new ArrayList<String>(); 
    Matcher matcher = Pattern.compile("InstanceId:[.]*,").matcher(instanceResultString);
    while(matcher.find())
        instanceIdList.add(matcher.group());
//instanceResultString是包含模式出现的实际字符串
List instanceIdList=new ArrayList();
Matcher Matcher=Pattern.compile(“InstanceId:[.]*,”).Matcher(instanceResultString);
while(matcher.find())
添加(matcher.group());

这里唯一的一点是,要匹配的字符串由非空白字符组成。
\S
模式匹配非空白字符

见:

String instanceResultString=“InstanceId:i-1234XYAadsadd,更多文本:InstanceId:u-222TTT,dde InstanceId:i-8999UIIIgjkkd,”;
List instanceIdList=new ArrayList();
Matcher Matcher=Pattern.compile(“InstanceId:\\s*(\\s+)”).Matcher(instanceResultString);
while(matcher.find())
instanceIdList.add(matcher.group(1));
System.out.println(instanceIdList);//示范线
//=>[i-1234XYAadsadd,u-222TTT,i-8999UIIIgjkkd]
在哪里

  • InstanceId:
    -文本
    InstanceId:
    text
  • \\s*
    -零个或多个空格
  • (\\S+)
    -第1组(我们使用
    .Group(1)
    获取这些内容)捕获1个或多个(但尽可能多)非空白符号
  • -逗号

可能
InstanceId:\\s*(\\s+),
和access
.group(1)
我想这将包括
InstanceId:
之后的空格,我想排除那些速度太慢,无法显示演示的情况。尝试
Matcher Matcher=Pattern.compile(“InstanceId:\\s*(\\s+)”).Matcher(instanceResultString);而(matcher.find())instanceIdList.add(matcher.group(1))请参阅“伟大”,非常感谢:注意,您可能还会考虑<代码> StistaNID:\s*(\s+)\b>代码>模式,在“代码> StistNoSID:String instanceResultString = "InstanceId: i-1234XYAadsadd, More text: InstanceId: u-222tttt, dde InstanceId: i-8999UIIIgjkkd,";
List<String> instanceIdList = new ArrayList<String>();
Matcher matcher = Pattern.compile("InstanceId:\\s*(\\S+),").matcher(instanceResultString);
while(matcher.find())
    instanceIdList.add(matcher.group(1));
System.out.println(instanceIdList); // Demo line
// => [i-1234XYAadsadd, u-222tttt, i-8999UIIIgjkkd]