“正则表达式 练习:解析URL”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) (→自己实现) |
||
(未显示同一用户的1个中间版本) | |||
第7行: | 第7行: | ||
* 端口是什么? 8080 | * 端口是什么? 8080 | ||
* 文件名是什么? index.htm | * 文件名是什么? index.htm | ||
+ | |||
+ | === 自己实现 === | ||
+ | <syntaxhighlight lang="java"> | ||
+ | import java.util.regex.Matcher; | ||
+ | import java.util.regex.Pattern; | ||
+ | |||
+ | public class Homework03 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | String content = "https://www.sohu.com:8080/abc/index.html"; | ||
+ | |||
+ | String regex = "^(http[s]?)://((\\w+\\.)+\\w+):(\\d+)(/\\w+)+/(\\w+\\.\\w+)$"; | ||
+ | |||
+ | Matcher matcher = Pattern.compile(regex).matcher(content); | ||
+ | |||
+ | |||
+ | if (matcher.find()) { | ||
+ | |||
+ | System.out.println(matcher.group(1)); | ||
+ | |||
+ | System.out.println(matcher.group(2)); | ||
+ | |||
+ | System.out.println(matcher.group(4)); | ||
+ | |||
+ | System.out.println(matcher.group(6)); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | https | ||
+ | www.sohu.com | ||
+ | 8080 | ||
+ | index.html | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === 视频实现 === | ||
+ | <syntaxhighlight lang="java"> | ||
+ | import java.util.regex.Matcher; | ||
+ | import java.util.regex.Pattern; | ||
+ | |||
+ | public class Homework03 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | String content = "http://www.sohu.com:8080/abc/index.html"; | ||
+ | |||
+ | String regStr = "^([a-zA-Z]+)://([a-zA-Z.]+):(\\d+)[\\w-/]*/([\\w.]+)$"; | ||
+ | |||
+ | Pattern pattern = Pattern.compile(regStr); | ||
+ | |||
+ | Matcher matcher = pattern.matcher(content); | ||
+ | |||
+ | if (matcher.matches()) { //整体匹配,如果匹配成功,可以通过group(x),获取对应分组的内容 | ||
+ | |||
+ | System.out.println("整体匹配=" + matcher.group(0)); | ||
+ | |||
+ | System.out.println("协议:" + matcher.group(1)); | ||
+ | |||
+ | System.out.println("域名:" + matcher.group(2)); | ||
+ | |||
+ | System.out.println("端口:" + matcher.group(3)); | ||
+ | |||
+ | System.out.println("文件:" + matcher.group(4)); | ||
+ | |||
+ | } else { | ||
+ | |||
+ | System.out.println("没有匹配成功"); | ||
+ | |||
+ | } | ||
+ | |||
+ | }//end main | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | 整体匹配=http://www.sohu.com:8080/abc/index.html | ||
+ | 协议:http | ||
+ | 域名:www.sohu.com | ||
+ | 端口:8080 | ||
+ | 文件:index.html | ||
+ | </syntaxhighlight> |
2022年11月25日 (五) 19:10的最新版本
https://www.bilibili.com/video/BV1Eq4y1E79W?p=26
对一个URL进行解析 "https://www.sohu.com:8080/abc/index.html"
- 要求得到协议是什么? http
- 域名是什么? www.sohu.com
- 端口是什么? 8080
- 文件名是什么? index.htm
自己实现
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Homework03 {
public static void main(String[] args) {
String content = "https://www.sohu.com:8080/abc/index.html";
String regex = "^(http[s]?)://((\\w+\\.)+\\w+):(\\d+)(/\\w+)+/(\\w+\\.\\w+)$";
Matcher matcher = Pattern.compile(regex).matcher(content);
if (matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(4));
System.out.println(matcher.group(6));
}
}
}
https
www.sohu.com
8080
index.html
视频实现
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Homework03 {
public static void main(String[] args) {
String content = "http://www.sohu.com:8080/abc/index.html";
String regStr = "^([a-zA-Z]+)://([a-zA-Z.]+):(\\d+)[\\w-/]*/([\\w.]+)$";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
if (matcher.matches()) { //整体匹配,如果匹配成功,可以通过group(x),获取对应分组的内容
System.out.println("整体匹配=" + matcher.group(0));
System.out.println("协议:" + matcher.group(1));
System.out.println("域名:" + matcher.group(2));
System.out.println("端口:" + matcher.group(3));
System.out.println("文件:" + matcher.group(4));
} else {
System.out.println("没有匹配成功");
}
}//end main
}
整体匹配=http://www.sohu.com:8080/abc/index.html
协议:http
域名:www.sohu.com
端口:8080
文件:index.html