Java正则表达式:从多次出现的模式中提取子字符串
对不起,如果这是一个蹩脚的问题,我对Java开发和正则表达式模式很陌生。
基本上我有一个很长的字符串,它有多个像InstanceId: i-1234XYAadsadd,这样的子字符串InstanceId: i-1234XYAadsadd,我想用正则表达式在ArrayList提取出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());
这里唯一的一点是你想匹配的字符串是由非空白字符组成的。 S模式匹配一个非空白字符。
看到这个演示:
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]
哪里
InstanceId:文字InstanceId:文本 s* - 零个或多个空格 (S+) - 第1组(我们用.group(1)获取这些内容)捕获一个或多个(但尽可能多)非空白符号 , - 逗号。 上一篇: Java Regex: extract a substring from a pattern occurring multiple times
下一篇: Regex for extracting the substring of a given type from a string
