第一段为合法html代码,第二段为不合法html代码。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
[^<]+匹配非<的任意多个字符
\\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 完!

转载于:https://blog.51cto.com/jooben/317570

正则表达式 学习笔记3.4相关推荐

  1. 正则表达式 学习笔记1.3

    书接上一回: 实例五:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /& ...

  2. 正则表达式 学习笔记4.3

    下面看看逆序环视结构: public class GeneralSix { public static void main(String[] args) { String[] strings = ne ...

  3. 正则表达式学习笔记011--贪婪和懒惰的匹配

    正则表达式学习笔记011--贪婪和懒惰的匹配 交流群1:251572072 交流群2:170933152 1.什么是贪婪匹配 从字面上理解:贪心,不满足,有多少要多少 比如正则里也一样:.*,.+,{ ...

  4. 正则表达式学习笔记010--子表达式的认识与应用

    正则表达式学习笔记010--子表达式的认识与应用 交流群1:251572072 交流群2:170933152 子表达式: ()用2个小括号,括起来的叫做子表达式 如: \d{3,4}([\s|-]?\ ...

  5. 正则表达式学习笔记009--大括号与选择符的认识与应用

    正则表达式学习笔记009--大括号与选择符的认识与应用 交流群1:251572072 交流群2:170933152 |  选择符 {n}前面的元素字符出现了n次 {n,}前面的元素字符最少出现n次,n ...

  6. 正则表达式学习笔记008--字符组简记法2

    正则表达式学习笔记008--字符组简记法2 交流群1:251572072 交流群2:170933152 \s [\t\n\r\f]     \t制表符     \n换行符     \r回车符     ...

  7. 正则表达式学习笔记007--字符组简记法1

    正则表达式学习笔记007--字符组简记法1 交流群1:251572072 交流群2:170933152 字符组简记法 1.对于常用的字符组,正则表达式提供了相应的简记法,能够方便的表示 它们,并让我们 ...

  8. 正则表达式学习笔记006--转义符的认识与应用

    正则表达式学习笔记006--转义符的认识与应用 交流群1:251572072 交流群2:170933152 也可以自己下载: 正则表达式学习笔记006--转义符的认识与应用 http://credre ...

  9. 正则表达式学习笔记005--脱字符和美元符的认识与应用

    正则表达式学习笔记005--脱字符和美元符的认识与应用 以前写的课程都没有附上源码,很抱歉! 交流群1:251572072 交流群2:170933152 也可以自己下载: 正则表达式学习笔记005-- ...

最新文章

  1. WhatFontIs - 字体百科全书,没有不认识的字体
  2. SQL Server CTE 递归查询全解
  3. 20万DBA都在关注的12个问题
  4. pdo mysql limit_PHP mysql中limit用法详解(代码示例)
  5. everything服务器网页设置,Everything HTTP 服务器设置
  6. Linux内存管理:反向映射机制(匿名页,文件页和ksm页)
  7. 自建latex服务器,通过在线服务器编译LaTeX
  8. python的zipfile压缩文件夹_python zipfile压缩使用说明
  9. Perl调用shell命令方法小结
  10. Spring Boot 2.x(十四):整合Redis,看这一篇就够了
  11. 鼎立测试软件速率在哪里看,鼎力测试软件中参数详解.docx
  12. 青龙面板之B站任务天选时刻
  13. 口袋精灵java源码_0428数字口袋精灵app优化
  14. 巴比特观察丨CryptoPunks再次爆火,幕后推手找到了!
  15. python 浮点数精度不准确_浮点数的 “floor division” (例如在python中)是否会导致精度不准?...
  16. 各大互联网大厂年终奖一览表,又是别人家的公司!
  17. 揭秘懒MM的瘦身食谱之真相
  18. idea创建python spark项目的步骤_Spark入门(二)--如何用Idea运行我们的Spark项目
  19. 一个算命顶级高手异常精彩的论述_huadingjin_新浪博客
  20. 3.3栈和队列的应用

热门文章

  1. 无限踩坑系列(7)-Latex使用Tips
  2. 用Python连接MySQL并进行CRUD
  3. Projection投影
  4. codeforces 160A-C语言解题报告
  5. Android WebView 使用漏洞
  6. Android RecyclerView实现九宫格效果
  7. 切记!职场邮件需注意的细节
  8. SQL零基础学习笔记(一)
  9. JQuery Datatables Dom 和 Language 参数详细说明
  10. 廖雪峰Java1-2程序基础-7布尔运算符