正则表达式 学习笔记5.3
原创
©著作权归作者所有:来自51CTO博客作者乐少黑板报的原创作品,请联系作者获取转载授权,否则将追究法律责任
模式的混合:
l 作用:同时使用多个模式
l 形式:在编译正则表达式时,把表示模式的多个参数以竖线“|”连接起来
例子:
public class MixedMode {
public static void main(String[] args) {
String str = "<a href=www.sina.com.cn>\nSINA\n</a>";
String regex = "<a href.*</a>";
Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(str);
if(m.find()){
System.out.println(str + "能够匹配正则:" + regex);
}else{
System.out.println(str + "不能够匹配正则:" + regex);
}
}
}
运行结果:
<a href=www.sina.com.cn>
SINA
</a>能够匹配正则:<a href.*</a>
模式的作用范围:
l 作用:精确控制各个模式的作用范围
l 形式:在表达式中,以 (?ismx) 的方式启用模式,以 (?-ismx) 的方式停用模式
我们知道,正则表达式一旦指定某个模式,则整个正则表达式都受这个模式的影响。
例子:
public class ModeSpanBasic {
public static void main(String[] args) {
String str = "abc";
String regex = "(?i)ABC";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if(m.find()){
System.out.println(str + "能够匹配正则:" + regex);
}else{
System.out.println(str + "不能够匹配正则:" + regex);
}
}
}
运行结果:
abc能够匹配正则:(?i)ABC
不区分大小写,整个正则表达式。
某个位置停用不区分大小写的匹配:
String regex = "(?i)AB(?-i)C";
运行结果:abc不能够匹配正则:(?i)AB(?-i)C
下面看看多个模式作用范围:
public class MixedMode {
public static void main(String[] args) {
String str = "<a href=www.sina.com.cn>\nSINA\n</a>";
String regex = "(?is)<a href.*</a>";
Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(str);
if(m.find()){
System.out.println(str + "能够匹配正则:" + regex);
}else{
System.out.println(str + "不能够匹配正则:" + regex);
}
}
}
运行结果:
<a href=www.sina.com.cn>
SINA
</a>能够匹配正则:(?is)<a href.*</a>
模式的冲突:
l 如果在正则表达式内部,通过模式作用范围指定了模式,而在外部又指定了其他模式参数,则模式作用范围的优先级更高。
例子:
public class ModeConfict {
public static void main(String[] args) {
String str = "abc";
String regex = "(?-i)ABC";
Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
if(m.find()){
System.out.println(str + "能够匹配正则:" + regex);
}else{
System.out.println(str + "不能够匹配正则:" + regex);
}
}
}
运行结果:
abc不能够匹配正则:(?-i)ABC
小结:
l 匹配模式:改变某些结构的匹配规定
·I: 不区分大小写匹配
·S: 单行模式(点号通配模式)
·M: 多行模式
·X: 注释模式
l 模式作用范围:精确控制模式的作用范围
· (?ismx)
· (?-ismx)
l 模式的冲突:优先选择模式作用范围
上一篇:正则表达式 学习笔记5.2
下一篇:第一章 MongoDb概述

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
正则表达式疑难释义-1
对正则表达式中的疑难与疑惑进行进一步解释说明
正则表达式 python -
正则表达式学习笔记
正则表达式学习文档元字符构造匹配^匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置
正则表达式 运算符 并集 字符串 -
正则表达式 学习笔记3.2
徒弟:正则的字符组,学习完了,还有什么呢?师傅:下面看看量词吧。
笔记 职场 正则表达式 学习 休闲 -
爬虫学习笔记 -- 正则表达式
仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者不承担任何法
爬虫 学习 正则表达式 3c 换行符