java 正则匹配 URL中指定的URI
时间: 2024-04-28 10:19:14 浏览: 12
以下是Java中使用正则表达式匹配URL中指定URI的示例代码:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String url = "http://www.example.com/path/to/uri?param1=value1¶m2=value2";
String uri = "/path/to/uri";
// 构造正则表达式
String regex = "^https?://[a-zA-Z0-9-.]+(:\\d+)?(" + Pattern.quote(uri) + ")[?#].*$";
Pattern pattern = Pattern.compile(regex);
// 匹配URL
Matcher matcher = pattern.matcher(url);
if (matcher.matches()) {
System.out.println("URL匹配成功!");
System.out.println("完整URL:" + matcher.group(0));
System.out.println("URI部分:" + matcher.group(1));
} else {
System.out.println("URL匹配失败!");
}
}
}
```
在上面的示例代码中,我们使用了正则表达式构造了一个匹配规则,其中`^`表示字符串的开头,`https?://`表示协议部分,`[a-zA-Z0-9-.]+(:\\d+)?`表示域名和端口号部分(可选),`(`和`)`表示我们要匹配的URI部分,使用了`Pattern.quote()`函数将URI中的特殊字符进行了转义,`[?#].*$`表示可能存在的查询参数和锚点部分。然后,我们使用`Pattern`类构造了一个正则表达式对象,使用`Matcher`类对URL进行匹配,如果匹配成功,则可以通过`group()`方法获取匹配到的结果。