正则表达式解析包含URL的转义字符的字符串

时间:2014-09-26 08:06:02

标签: java regex

我正在尝试从文件中读取的示例Url 我必须在之前解析包含转义字符的URL: 例如https://www.sample.co.in:8080? 或http://www.sample.co.in

可悲的是我写的正则表达式

Regex = \w*\\:.*  

有助于解析第二个例子。无论我在哪里得到:那应该有一个' \#39;的前缀。如果我有一个像这样的字符串http:\ www.google.com它不应该通过。 我正在尝试从日志文件中提取文本。

2 个答案:

答案 0 :(得分:1)

如果您只想验证网址,那么其中一个已经有很多好的答案

您可以尝试这样进行网址验证

String lRegex = "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";

另一方面,如果你想从网址获取属性,请试试这个

URL aURL = new URL("https:/www.sample.co.in:8080");
System.out.println("protocol = " + aURL.getProtocol());
System.out.println("authority = " + aURL.getAuthority());
System.out.println("host = " + aURL.getHost());
System.out.println("port = " + aURL.getPort());

答案 1 :(得分:0)

在通过各种引用查看之后,我设法构建了我正在寻找的正则表达式。

String regex = "(query=.*?(?<!\\\\):)+.*?";
Pattern PATTERN = Pattern.compile(regex);
String notvalue = "query=https\\://www.localhost.com\\:80";
String passvalue = "query=https://www.localhost.com\\:80";

谢谢大家。 :) 当我们提供不应解析的错误URL时,返回true。