import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?<timestamp_utc>\\d\\d\\d\\d\\-\\d\\d\\-\\d\\d\\s\\d\\d\\:\\d\\d\\:\\d\\d)\\s[^\\s]+\\sPOST\\s\\/RDWeb\\/Pages\\/[^\\/]+\\/login\\.aspx\\s[^\\s]+\\s[0-9]+\\s-\\s(?<ipaddress>[^\\s]+).*\\s200\\s[^\\n]+\\n";
final String string = "2023-03-20 05:43:20 1.2.3.4 POST /RDWeb/Pages/en-US/login.aspx - 443 - 2.3.4.5 Mozilla/5.0+(Macintosh;+Intel+Mac+OS+X+10_15_7)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/109.0.0.0+Safari/537.36 https://your.rdsserver.org.uk/RDWeb/webclient/ 200 0 0 15\n"
+ "2023-03-20 15:33:46 1.2.3.4 POST /RDWeb/Pages/en-US/login.aspx ReturnUrl=%2FRDWeb%2FPages%2Fen-US%2FDefault.aspx 443 - 2.3.4.5 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/111.0.0.0+Safari/537.36 https://your.rdsserver.org.uk/RDWeb/Pages/en-US/login.aspx?ReturnUrl=/RDWeb/Pages/en-US/Default.aspx 200 0 0 2265\n"
+ "2024-03-15 00:04:49 1.2.3.4 POST /RDWeb/Pages/en-US/login.aspx - 443 - 36.133.118.254 node-fetch/1.0+(+https://github.com/bitinn/node-fetch) - 200 0 0 763\n"
+ "2024-03-21 02:47:46 1.2.3.4 POST /RDWeb/Pages/en-US/login.aspx - 443 - 41.185.8.146 - - 200 0 0 391\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
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