import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\b(?:https?:\\/\\/)?[\\w-\\.$~!&'()*+,;=:%-]{3,50}:([\\w-\\.%$^#&'()*+,;=:%-]{3,50})@[a-zA-Z0-9.-]+(?:\\.[a-zA-Z]{2,})?\\b";
final String string = "### rgmz example\n"
+ "@----__-2as-2:password@----__-2as-2.com\n"
+ "### From test cases\n"
+ "var (\n"
+ " validPattern = \" https://kaNydBSAodo87dSAFtsd7.com:1234@qYY3SylY7fHP \"\n"
+ " validPattern2 = `<p><a href=\"http://username:password@127.0.0.1\">http://username:password@127.0.0.1</a></p>`\n"
+ " invalidPattern = \"https://kaNydBSAodo87dsm9asuiSAFtsd7.com.1234@qYY3SylY7fHP\"\n"
+ " keyword = \"uri\"\n"
+ ")\n"
+ "### examples from chatgpt\n"
+ "1. `https://user.name:pa$$word123@sub.example.com` \n"
+ "2. `http://u$er_name:my%p@$$word@api.dev.localhost` \n"
+ "3. `https://12345:67890@my-app.server123.co.uk` \n"
+ "4. `http://user~!name:pass.word@some-long-subdomain.example.org` \n"
+ "5. `https://_:__@localhost` \n"
+ "6. `https://admin:admin123@192.168.1.1` \n"
+ "7. `http://test-user:complex!password#123@server.example.io` \n"
+ "8. `https://valid_user:!valid-password@simple-host.co` \n"
+ "9. `http://username_with.dots:password_with-dashes@domain.with.subdomain.net` \n"
+ "10. `https://username:password@127.0.0.1:8080` \n"
+ "11. `http://user:pass@----__-2as-2` \n"
+ "12. `https://user@localhost` \n"
+ "13. `http://user:pass@:invalidhost` \n"
+ "14. `https://:passwordonly@hostname.com` \n"
+ "15. `ftp://username:password@hostname.com` \n"
+ "16. `https://user:password@hostname_with_underscores.com` \n"
+ "17. `http://user@:missingpassword.com` \n"
+ "18. `https://missingcolonpassword@hostname.com` \n"
+ "19. `http://user:password@-invalid-hostname.com` \n"
+ "20. `https://user:password@host..com` ";
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