import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^\\s+(?P<user>[\\w[:print:]]+) [\\w\\-\\.]+ [[:print:]]+ ?\\(v[\\w\\.]+\\) \\([\\w\\-\\.]+\\/\\d+ \\d+\\)\\, start \\w+ \\d+\\/\\d+ \\d+\\:\\d+(\\,\\s(?P<licenses>\\d+)\\s\\w+|)(\\s+\\(linger\\:\\s\\d+\\s\\/\\s\\d+\\))?$";
final String string = "\n"
+ " userone host01 :78 APS Base (v19.100) (licserver/27010 7401), start Thu 5/14 15:31, 2 licenses\n"
+ " userone host01 :78 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 7501), start Thu 5/14 15:31, 4 licenses\n"
+ " userone host01 :75 APS Base (v19.100) (licserver/27010 18901), start Thu 5/14 15:33, 2 licenses\n"
+ " userone host01 :75 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 19001), start Thu 5/14 15:33, 4 licenses\n"
+ " userone host01 :76 APS Base (v19.100) (licserver/27010 18702), start Thu 5/14 15:34, 2 licenses\n"
+ " userone host01 :76 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 17002), start Thu 5/14 15:34, 4 licenses\n"
+ " userone host01 :77 APS Base (v19.100) (licserver/27010 23302), start Thu 5/14 15:34, 2 licenses\n"
+ " userone host01 :77 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 23801), start Thu 5/14 15:34, 4 licenses\n"
+ " userone host01 :60 APS Base (v19.100) (licserver/27010 23901), start Thu 5/14 15:34, 2 licenses\n"
+ " userone host01 :60 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 24001), start Thu 5/14 15:34, 4 licenses\n"
+ " userone host01 :68 APS Base (v19.100) (licserver/27010 25501), start Thu 5/14 15:34, 2 licenses\n"
+ " userone host01 :68 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 25601), start Thu 5/14 15:34, 4 licenses\n"
+ " userone host01 :58 APS Base (v19.100) (licserver/27010 22803), start Thu 5/14 15:34, 2 licenses\n"
+ " userone host01 :58 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 27801), start Thu 5/14 15:34, 4 licenses\n"
+ " useronexr host01 :51 Spectre X Base (v19.100) (licserver/27010 61140), start Sat 5/16 13:41, 3 licenses\n"
+ " useronexr host01 :52 Spectre X Base (v19.100) (licserver/27010 31125), start Sat 5/16 13:43, 3 licenses\n"
+ " useronexr host01 :76 Spectre X Base (v19.100) (licserver/27010 53463), start Sat 5/16 13:47, 3 licenses\n"
+ " useronexr host01 :69 Spectre X Base (v19.100) (licserver/27010 41523), start Sat 5/16 13:47, 3 licenses\n"
+ " useronexr host01 :51 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 46233), start Sat 5/16 14:08, 6 licenses\n"
+ " useronex host01 :52 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 32328), start Sat 5/16 14:10, 6 licenses\n"
+ " useronex host01 :69 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 10953), start Sat 5/16 14:16, 6 licenses\n"
+ " useronex host02 :76 Spectre X Multi-core (Max. 16 cores) (v19.100) (licserver/27010 32114), start Sat 5/16 14:17, 6 licenses\n"
+ " useronexr host02 localhost:10 APS Base (v19.100) (licserver/27010 31935), start Sun 5/17 10:18, 2 licenses\n"
+ " useronexr host02 localhost:10 APS Multi-core (Max. 16 cores) (v19.100) (licserver/27010 6614), start Sun 5/17 10:21, 4 licenses\n\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html