三、正则表达式

  • 正则表达式语法——正则表达式是业界通用的文本处理表达式

1.什么是正则表达式?

 - 正则表达式是检查、匹配字符串的表达式-  正则表达式是描述规则,主流语言都有良好支持-  字符串校验、查找与替换是正则表达式主要使用场景
  • 常用正则表达式——通过常用正则表达式巩固语法规则
    下面给出一个正则表达式的案例:
    1.检查输入的身份证是否合法:
    示例: 13010220200328091x
    正则表达式:(\d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x)$)
    2.字符范围匹配:



贪婪模式与非贪婪模式

贪婪模式就是京可能的匹配最多的字符,
非贪婪模式就是尽可能少的匹配满足正则表达式的字符串。
例如:当使用贪婪模式时:

而使用非贪婪模式时:

表达式分组:

正则表达式可以用()分组为多个子表达式。

  • 编程使用正则表达式——讲解如何在Java和JS中使用正则表达式.

在JS中使用正则表达式过滤

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="#" method ="post" id="frmInfo"><div id="err",style="color:red"></div><div>姓名:<input id="name",name ="name"/>身份证:<input id="idno",name ="idno"/><input type="submit"/></div>
</form>
<script type="text/javascript">
document.getElementById("frmInfo").onsubmit = function(){var regix1= /^[\u4e00-\u9fa5]{2,8}$/var regix2= /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/if(regix1.test(document.getElementById("name").value)==false){document.getElementById("err").innerHTML ="无效姓名";return false;}else if(regix2.test(document.getElementById("idno").value)==false){document.getElementById("err").innerHTML ="无效身份证";return false;}return true;
}
</script>
</body>
</html>

效果:

java页面中信息获取

通过正则表达式从页面中提取信息;
处理代码:

package com.imooc.regex;import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class RegexSample {public static void main(String[] args) {StringBuilder content = new StringBuilder();try {FileInputStream fis = new FileInputStream("D:/workspace/regex/WebContent/sample.html");InputStreamReader isr = new InputStreamReader(fis,"UTF-8");BufferedReader bufferedReader = new BufferedReader(isr);String lineText = "";while((lineText = bufferedReader.readLine()) != null) {//              System.out.println(lineText);content.append(lineText + "\n");}bufferedReader.close();System.out.println(content);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}//1.创建正则表达式对象Pattern p = Pattern.compile("<li>([\\u4e00-\\u9fa5]{2,10})([a-zA-Z]+)</li>");//2.匹配正则表达式Matcher m = p.matcher(content);//3.查找匹配的结果while(m.find()) {//          System.out.println(m.group(0));String chs = m.group(1);String eng = m.group(2);System.out.println(chs + "-" + eng);}}
}
<!DOCTYPEhtml>
<html>
<head>
<meta charset="UTF-8">
<title>国际主要城市</title>
</head>
<body><h1>国际主要城市</h1><ul><li>纽约NewYork</li><li>伦敦London</li><li>东京Tokyo</li><li>巴黎Paris</li><li>香港HongKong</li><li>新加坡Singapore</li><li>悉尼Sydney</li><li>米兰Milano</li><li>上海Shanghai</li><li>北京Beijing</li><li>马德里Madrid</li><li>莫斯科Moscow</li><li>首尔Seoul</li><li>曼谷Bangkok</li><li>多伦多Toronto</li><li>布鲁塞尔Brussels</li><li>芝加哥Chicago</li><li>吉隆坡KualaLumpur</li><li>孟买Mumbai</li><li>华沙Warsaw</li><li>圣保罗SaoPaulo</li><li>苏黎世Zurich</li><li>阿姆斯特丹Amsterdam</li><li>墨西哥城MexicoCity</li><li>雅加达Jakarta</li><li>都柏林Dublin</li><li>曼谷Bangkok</li><li>台北Taipei</li><li>伊斯坦布尔Istanbul</li><li>里斯本Lisbon</li><li>罗马Rome</li><li>法兰克福Frankfurt</li><li>斯德哥尔摩Stockholm</li><li>布拉格Prague</li><li>维也纳Vienna</li><li>布达佩斯Budapest</li><li>雅典Athens</li><li>加拉加斯Caracas</li><li>洛杉矶LosAngeles</li><li>新西兰NewZealand</li><li>圣地亚哥SanDiego</li><li>布宜诺斯艾利斯BuenosAires</li><li>华盛顿Washington</li><li>墨尔本Melbourne</li><li>约翰内斯堡Johannesburg</li><li>亚特兰大Atlanta</li><li>巴塞罗那Barcelona</li><li>旧金山SanFrancisco</li><li>马尼拉Manila</li><li>波哥大Bogota</li><li>特拉维夫TelAviv-Yafo</li><li>新德里NewDelhi</li><li>迪拜Dubai</li><li>布加勒斯特Bucharest</li><li>奥斯陆Oslo</li><li>柏林Berlin</li><li>赫尔辛基Helsinki</li><li>日内瓦Geneva</li><li>利雅得Riyadh</li><li>哥本哈根Copenhagen</li><li>汉堡Hamburg</li><li>开罗Cairo</li><li>卢森堡Luxembourg</li><li>班加罗尔Bangalore</li><li>达拉斯Dallas</li><li>科威特城Kuwaitcity</li><li>波士顿Boston</li><li>慕尼黑Munich</li><li>迈阿密Miami</li><li>利马Lima</li><li>基辅Kiev</li><li>休斯顿Houston</li><li>广州Guangzhou</li><li>贝鲁特Beirut</li><li>卡拉奇Karachi</li><li>索菲亚Sophia</li><li>蒙得维的亚Montevideo</li><li>里约热内卢RioDEJaneiro</li><li>胡志明市HoChiMinhCity</li><li>蒙特利尔Montreal</li><li>内罗毕Nairobi</li><li>巴拿马城Panamacity</li><li>金奈Chennai</li><li>布里斯班Brisbane</li><li>卡萨布兰卡Casablanca</li><li>丹佛Denver</li><li>基多Quito</li><li>斯图加特Stuttgart</li><li>温哥华Vancouver</li><li>麦纳麦MaiNaMai</li><li>危地马拉市Guatemalacity</li><li>开普敦CapeTown</li><li>圣何塞SanJose</li><li>西雅图Seattle</li><li>深圳Shenzhen</li><li>珀斯Perth</li><li>加尔各答Calcutta</li><li>安特卫普Antwerp</li><li>费城Philadelphia</li><li>鹿特丹Rotterdam</li><li>拉各斯Lagos</li><li>波特兰Portland</li><li>底特律Detroit</li><li>曼彻斯特Manchester</li><li>惠灵顿Wellington</li><li>里加Riga</li><li>爱丁堡Edinburgh</li><li>圣彼得堡StPetersburg</li><li>圣迭戈SanDiego</li><li>伊斯兰堡Islamabad</li><li>伯明翰Birmingham</li><li>多哈Doha</li><li>阿拉木图AlmaAtaAlmaty</li><li>卡尔加里Calgary</li></ul>
</body>
</html>

正则表达式Regix相关推荐

  1. Java—正则表达式(Pattern类和Matcher类)

    正则表达式介绍   正则表达式可以用于对字符串的处理,相当于是一个匹配字符串的模板.主要包含查找.替换.分割.提取等操作:Java中通过Pattern和Matcher类提供对正则的支持. 字符处理 特 ...

  2. 通过正则表达式校验手机号码,拿走即用!

    校验手机号码 2021/01/06更新,电信新增了191号段 1. 单纯校验长度 2.正则表达式校验数字 3.正则表达式校验是否是大陆号码 4.正则表达式校验是否是香港号码 //校验长度private ...

  3. Linux shell 学习笔记(15)— shell 正则表达式

    1. 定义 BRE 模式 1.1 纯文本 第一条原则就是:正则表达式模式都区分大小写.这意味着它们只会匹配大小写也相符的模式. $ echo "This is a test" | ...

  4. re2正则表达式匹配引擎的c接口版本cre2的中文使用手册

    前言 re2 官方地址: https://github.com/google/re2 cre2 官方地址: https://github.com/marcomaggi/cre2 1 基本类型定义 不透 ...

  5. 正则表达式(括号)、[中括号]、{大括号}的区别小结

    正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...

  6. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  7. 正则语法完全正则表达式手册_语法格式重点

    20211202 https://blog.csdn.net/lc11535/article/details/103266263 该表达式打开re.U(re.UNICODE)标志. python –& ...

  8. 正则表达式 - 语法

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 例如: r ...

  9. 正则表达式中的\.表示什么意思

    \ 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配.例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符.

最新文章

  1. .net之工作流工程展示及代码分享(二)工作流引擎
  2. jQuery - 当当网我的订单页
  3. 第五章 逻辑回归模型在评分卡开发中的应用
  4. 创建视图,查询表空间的利用情况
  5. 最常用的决策树算法(一):ID3、C4.5、CART
  6. gwt格式_GWT的渐进式Web应用程序配方
  7. Mac技巧,更改Mac桌面图片
  8. x[:,n]或者x[n,:]的用法
  9. 龙芯2F 8089D 安装 debian 8.10
  10. 模拟实现一个银行的取号机
  11. c++filt 命令
  12. Java系列之—— getBytes() 方法
  13. 迅影QQ视频查看v2.0 源码
  14. dim c语言,编程基础-C程序的组成
  15. JNI中创建新的线程回调java方法的技巧
  16. uniapp启动微信小程序报错---initialize
  17. 微信自定义菜单使用特殊字符出现的问题
  18. css3僵尸走路动画js特效
  19. 【有利可图网】配色攻略-红色篇
  20. Linux监控操作系统CPU、内存、磁盘、网络和dstat

热门文章

  1. Vue 项目处理每次发版后要清理浏览器缓存
  2. ipad无法充电怎么办_Ipad显示不在充电怎么办
  3. 我把电脑系统升级成Windows11,体验了一下还是换回Windows10
  4. Android科大讯飞语音按队列播报
  5. 罗克韦尔AB PLC RSLogix5000中的比较指令使用方法介绍
  6. PAKDD 2019 AutoML 挑战赛圆满落幕,中国队伍包揽前三...
  7. 单细胞转录组文章复现系列(一)——seurat
  8. starUML建立模型及生成代码框架
  9. “回复TD即可退订” 是真的吗?
  10. UOJ #141. 【UER #4】量子态的棋盘