根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
正则表达式使用单个字符串来描述和匹配与某个语法规则匹配的一系列字符串. 在搜寻器中解析html时,可以使用常规规则轻松提取信息
本文使用JAVA语言表示正则表达式.
模式说明
w匹配字母,数字,下划线
W匹配非字母,数字,下划线
s匹配任何空白字符java正则表达式详解,等同于[f]
S匹配任何非空字符
d匹配任何数字java正则表达式详解,等于[0-9]
D匹配非数字字符
A匹配字符串的开头
匹配字符串的结尾. 如果有换行符,则仅匹配换行符之前的结尾字符串
z匹配字符串的结尾,如果有换行符,它也会匹配换行符
G匹配最后一个匹配位置
匹配换行符
匹配标签
^匹配字符串的开头
$匹配字符串的结尾
. 匹配换行符以外的任何字符
[^…]不在[]中的字符,例如[^ abc]与a,b,c以外的其他字符匹配
*匹配0个或更多表达式
+匹配一个或多个表达式
?以非贪婪方式匹配零个或上述正则表达式片段之一
()匹配括号中的表达式,也代表一个组
{n}精确匹配n个前面的表达式,例如d {n},代表n个数字
{n,m}以贪婪的方式将n匹配到前一个正则表达式定义的句段的m到m倍
代码战斗:
public class RegexAction {
public static void main(String[] args) {
String s = "Hello 123 4567 World_This is a Regex Demo";
//match_1(s);
//match_2(s);
//match_3(s);
//match_4(s);
//match_5(s);
match_6(s);
}
private static void match_1(String s) {
Pattern pattern = Pattern.compile("^Hello\s\d\d\d\s\d{4}\s\w{10}");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(0));
}
}
private static void match_2(String s) {
Pattern pattern = Pattern.compile("Hello\s(\d+)\s\d{4}\s\w{10}");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(0)); //匹配到的整个结果
System.out.println(matcher.group(1)); //匹配到的第一个括号中的结果
}
}
private static void match_3(String s) {
Pattern pattern = Pattern.compile("Hello\s(\d*)\s\d{4}\s\w{10}");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(0)); //匹配到的整个结果
System.out.println(matcher.group(1)); //匹配到的第一个括号中的结果
}
}
private static void match_4(String s) {
Pattern pattern = Pattern.compile("Hello.*Demo");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(0)); //匹配到的整个结果
}
}
/**
* 贪婪匹配
* 匹配中间数字,只能得到7
* .*会尽可能多的匹配数据
* @param s
*/
private static void match_5(String s) {
Pattern pattern = Pattern.compile("Hello.*(\d+).*Demo");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group(1)); //匹配到的整个结果
}
}
/**
* .*?非贪婪匹配
* @param s
*/
private static void match_6(String s) {
Pattern pattern = Pattern.compile("Hello.*?(\d+).*Demo");
Matcher matcher = pattern.matcher(s);
if(matcher.find()) {
System.out.println(matcher.group());
System.out.println(matcher.group(1));
}
}
/**
* 正则表达式字符串也可以不编译直接使用
* @param s
*/
private static void match_7(String s) {
String regex = "Hello.*?(\d+).*Demo";
boolean flag = s.matches(regex);
System.out.println(flag);
}
}
模式类
模式对象是正则表达式的编译表示形式
火柴人班
Matcher对象是一个解释并匹配输入字符串的引擎
find()方法
尝试找到与模式匹配的输入序列的下一个子序列,直到搜索到输入序列的末尾为止
您可以从指定位置匹配查找(int开头)
本文来自本站,转载请注明本文网址: http://www.pc-fly.com/a/jisuanjixue/article-264551-1.html
|