import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "# Find the company at the beginning of the line, always:\n"
+ "^ COMPANY:(?P<company>[^\\s|]+(?:[ ][^\\s|]+)*)\n\n"
+ "# After COMPANY, any of PERSON or PRODUCT may be matched:\n"
+ "|\\G [^\\S\\r\\n]*[|][^\\S\\r\\n]*\n"
+ " PERSON:(?P<person>[^\\s|]+(?:[ ][^\\s|]+)*)\n"
+ "|\\G [^\\S\\r\\n]*[|][^\\S\\r\\n]*\n"
+ " PRODUCT:(?P<product>[^\\s|]+(?:[ ][^\\s|]+)*)";
final String string = "COMPANY:Pizza\n"
+ "COMPANY:Pizza \n"
+ "COMPANY:Pizza | PERSON:Sid Sanders | PERSON:Louise Lane | PRODUCT:Bananas \n"
+ "COMPANY:Pizza |PERSON:Sid Sanders | PERSON:Louise Lane| PRODUCT:Bananas\n"
+ "COMPANY:Pizza| PERSON:Sid Sanders | PERSON:Louise Lane|PRODUCT:Bananas\n"
+ "COMPANY:Pizza|PERSON:Sid Sanders | PERSON:Louise Lane |PRODUCT:Bananas \n\n"
+ "COMPANY:Food Heaven\n"
+ "COMPANY:Food 123 Heaven \n"
+ "COMPANY:Food Heaven | PRODUCT:Bananas | PERSON:Sid Sanders | PERSON:Louise Lane \n"
+ "COMPANY:Food Heaven123| PRODUCT:Bananas |PERSON:Sid Sanders | PERSON:Louise Lane\n"
+ "COMPANY:Food Heaven| PERSON:Sid Sanders | PERSON:Louise Lane | PRODUCT:Bananas \n"
+ "COMPANY:Food Heaven|PERSON:Sid Sanders| PRODUCT:Bananas | PERSON:Louise Lane\n\n"
+ "COMPANY:Something Somewhere Anywhere - There\n"
+ "COMPANY:Something 1 Soöômewhere Anywhere There \n"
+ "COMPANY:Something 2 Somewhere - Anywhere There | PERSON:Sid Sanders | PRODUCT:Bananas| PERSON:Louise Lane\n"
+ "COMPANY:Something - Somewhere Anywhere There |PERSON:Sid Sanders| PRODUCT:Bananas | PERSON:Louise Lane\n"
+ "COMPANY:- Something 3 Somewhere Anywhere There| PERSON:Sid Sanders |PRODUCT:Bananas | PERSON:Louise Lane\n"
+ "COMPANY:Something Somewhere 4 Anywhere There|PERSON:Sid Sanders | PRODUCT:Bananas | PERSON:Louise Lane\n\n"
+ "# Should not match:\n"
+ "|PERSON:Fred Rogers\n"
+ " | PRODUCT:Mr. Roger's Neighborhood\n\n"
+ "# Should start matching again:\n"
+ "COMPANY:Fred Rogers Productions |PERSON:Fred Rogers |PRODUCT:Mr. Roger's Neighborhood\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.COMMENTS);
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