正则表达式 学习笔记3.4
2010-05-18 20:58
267 查看
第一段为合法html代码,第二段为不合法html代码。
[^<]+匹配非<的任意多个字符
\\w+[^<]+</\\w+>;
开头用来匹配开始tag
结尾用来匹配结束tag
中间用来匹配文本。
发现这个正则表达式,既能匹配合法,又能匹配不合法的。
因为匹配开始tag和结束tag的两个子表达式,并没有什么联系,也就是说匹配的结束tag并不等于开始的tag
下面用反向引用在两个子表示之间建立联系:
String regex = "<(\\w+)>[^<]+</(\\1)>";
运行结果:
<h1>good,good</h1>能够匹配正则:<(\w+)>[^<]+</(\1)>
<h1>bad</h2>不能够匹配正则:<(\w+)>[^<]+</(\1)>
对匹配开始tag的子表达式添加捕获分组:
<(\\w+)
在匹配结束tag的子表达式中,使用\1这个反向引用的功能:
</(\\1)>引用之前的子表达式:(\\w+)
补充:
一些题外话;使用正则表达式替换的时候,也可以使用反向引用的功能。
例子:
public class GeneralEvelent {
public static void main(String[] args) {
String dupWords = "word word";
String dupWordRegex = "(\\w+)\\s+(\\1)";
System.out.println("替换之前:"+dupWords);
System.out.println("替换之后:"
+dupWords.replaceAll(dupWordRegex, "$1"));
}
}
运行结果:
替换之前:word word
替换之后:word
简单的去掉重复单词的例子
dupWords.replaceAll(dupWordRegex, "$1")
$1按照java语言规定,这个特殊变量对应的是正则表达式中编号为1的分组所捕获的字符串。
也就是说将两个重复单词的字符串,替换为单个重复单词的字符串,这样就去掉了一个重复单词。
小结
・量词:规定之前元素出现的次数
・*,+,?
・区间量词:{min,max}
・量词的局限:括号(...)的使用
・括号的用途:多选分支
・括号的用途:捕获分组
・括号的用途:反向引用
正则表达式 学习笔记3 完!本文出自 “lee” 博客,请务必保留此出处http://jooben.blog.51cto.com/253727/317570
[^<]+匹配非<的任意多个字符
\\w+[^<]+</\\w+>;
开头用来匹配开始tag
结尾用来匹配结束tag
中间用来匹配文本。
发现这个正则表达式,既能匹配合法,又能匹配不合法的。
因为匹配开始tag和结束tag的两个子表达式,并没有什么联系,也就是说匹配的结束tag并不等于开始的tag
下面用反向引用在两个子表示之间建立联系:
String regex = "<(\\w+)>[^<]+</(\\1)>";
运行结果:
<h1>good,good</h1>能够匹配正则:<(\w+)>[^<]+</(\1)>
<h1>bad</h2>不能够匹配正则:<(\w+)>[^<]+</(\1)>
对匹配开始tag的子表达式添加捕获分组:
<(\\w+)
在匹配结束tag的子表达式中,使用\1这个反向引用的功能:
</(\\1)>引用之前的子表达式:(\\w+)
补充:
一些题外话;使用正则表达式替换的时候,也可以使用反向引用的功能。
例子:
public class GeneralEvelent {
public static void main(String[] args) {
String dupWords = "word word";
String dupWordRegex = "(\\w+)\\s+(\\1)";
System.out.println("替换之前:"+dupWords);
System.out.println("替换之后:"
+dupWords.replaceAll(dupWordRegex, "$1"));
}
}
运行结果:
替换之前:word word
替换之后:word
简单的去掉重复单词的例子
dupWords.replaceAll(dupWordRegex, "$1")
$1按照java语言规定,这个特殊变量对应的是正则表达式中编号为1的分组所捕获的字符串。
也就是说将两个重复单词的字符串,替换为单个重复单词的字符串,这样就去掉了一个重复单词。
小结
・量词:规定之前元素出现的次数
・*,+,?
・区间量词:{min,max}
・量词的局限:括号(...)的使用
・括号的用途:多选分支
・括号的用途:捕获分组
・括号的用途:反向引用
正则表达式 学习笔记3 完!本文出自 “lee” 博客,请务必保留此出处http://jooben.blog.51cto.com/253727/317570
相关文章推荐
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
- C#正则表达式学习笔记
- java学习笔记(六) -- 正则表达式
- 【js学习笔记-061】正则表达式
- 【原】Java学习笔记023 - 字符串缓冲区_正则表达式
- python爬虫之正则表达式学习笔记一
- 【MongoDB学习笔记16】MongoDB的查询:find中的正则表达式
- 正则表达式 学习笔记2.2
- 黑马程序员 java学习笔记——正则表达式
- SED,AWK学习笔记Part 1-----利用正则表达式进行文本匹配
- 关于正则表达式的学习笔记
- 正则表达式学习笔记 (转载)
- python学习笔记(四)正则表达式
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<正则表达式>(三十一)
- 【知了堂学习笔记】java中的正则表达式
- C#正则表达式学习笔记
- Python学习笔记(十):Python正则表达式
- Python学习笔记5(字符串与正则表达式)
- [学习笔记]Java正则表达式
- Openresty 学习笔记(二)Nginx Lua 正则表达式相关API