import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:id=(?<ID_Firewall>\\w+) )(?:.*time=\"(?<timestamp>(?:[0-9]{4})-(?:[0-9]{2})-(?:[0-9]{2}) (?:[0-9]{2}):(?:[0-9]{2}):(?:[0-9]{2}))\")(?: fw=(?<IP_Firewall>[[:graph:]]+))(?: pri=(?<Niveau>(?:[0-9]{1,2})))(?:.*m=(?<ID_Event>[[:graph:]]+))(?:.*?msg=\"(?<Description>[^\"]+))(?:.*srcMac=(?<MAC_Source>[[:graph:]]+))?(?:.*src=(?<IP_Source>(?:[[:digit:]]+\\.){3}(?:[[:digit:]]+))?)(?::(?<Port_Source>[[:digit:]]+)?)(?::(?<INT_Source>[[:graph:]]+))(?:.*srcZone=(?<Zone_Source>[[:graph:]]+))?(?:.*natSrc=(?<NAT_Source>(?:[[:digit:]]+\\.){3}(?:[[:digit:]]+))?)?(?::(?<NAT_Port_Source>[[:digit:]]+)?)?(?:.*dstMac=(?<MAC_Destination>[[:graph:]]+))?(?:.*dst=(?<IP_Destination>(?:[[:digit:]]+\\.){3}(?:[[:digit:]]+))?)(?::(?<Port_Destination>[[:digit:]]+)?)(?::(?<INT_Destination>[[:graph:]]+))(?:.*dstZone=(?<Zone_Destination>[[:graph:]]+))?(?:.*natDst=(?<NAT_Destination>(?:[[:digit:]]+\\.){3}(?:[[:digit:]]+))?)?(?::(?<NAT_Port_Destination>[[:digit:]]+)?)?(?:.*usr=\"(?<Utilisateur>[^\"]+))?(?:.*proto=(?<Protocole>[[:graph:]]+))?(?:.*rule=\"(?<Regle>[^\"]+))?(?:.*appName=\"(?<Nom_Application>[^\"]+))?(?:.*dstname=(?<Nom_Destination>[[:graph:]]+))?(?:.*arg=(?<Argument_DST>[[:graph:]]+))?(?:.*Category=\"(?<Categorie>[^\"]+))?(?:.*note=\"(?<Note>[^\"]+))?";
final String string = "<134> id=FIREWALL_SYSLOG time=\"2019-03-21 12:30:24\" fw=1.1.1.1 pri=6 c=1024 gcat=6 m=537 msg=\"Connection Closed\" srcMac=aa:bb:cc:dd:ee:ff src=2.2.2.2:12345:X1 srcZone=LAN natSrc=3.3.3.3:54321 dstMac=gg:hh:ii:jj:kk:ll dst=4.4.4.4:443:X2 dstZone=WAN natDst=5.5.5.5:443 usr=\"Unknown\" proto=tcp/https sent=1348 rcvd=8230 spkt=10 rpkt=9 cdur=2266 rule=\"(WAN->WAN)\" app=49177 appName=\"HTTPS\" n=55917537";
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