import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\|\\K(?=.{1,253}\\|)(?!.*--.*)(?P<fqdn>(?:(?!-)(?![0-9])[a-zA-Z0-9-]{1,63}(?<!-)\\.){1,}(?:(?!-)[a-zA-Z0-9-]{1,63}(?<!-)))\\|";
final String string = "|abc123-bar-qwerty.foo.com|\n"
+ "|foo.bar|\n"
+ "|foo.bar.com|\n"
+ "|foo--bar.com|\n\n"
+ "|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.63|\n"
+ "|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.64|\n\n"
+ "|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a.253|\n\n"
+ "|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aa.254|\n\n\n"
+ "|1.2.3.4.5.6.7.8.9.10.11.12.13|\n"
+ "|1.2.3.4.5.6.7.8.9.10.11.12.13.14|\n"
+ "|133tfoo.bar.com|\n"
+ "|foo|\n"
+ "|foo.|\n"
+ "|foo.bar.|\n"
+ "|foo-|\n"
+ "|foo-.|\n"
+ "|foo-.bar|\n"
+ "|foo-.bar.|\n"
+ "|foo-.bar-.com|\n"
+ "|.foo-bar|\n"
+ "|foo-bar|\n"
+ "|foo-.bar|\n"
+ "|-foo-bar|\n"
+ "|--foo-bar|\n"
+ "|foo--bar|\n"
+ "|foo-bar.|";
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