本系列文章经补充和完善,已修订整理成书《Java编程的逻辑》,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http://item.jd.com/12299018.html


上节我们提到了正则表达式,它提升了文本处理的表达能力,本节就来讨论正则表达式,它是什么?有什么用?各种特殊字符都是什么含义?如何用Java借助正则表达式处理文本?都有哪些常用正则表达式?由于内容较多,我们分为三节进行探讨,本节先简要探讨正则表达式的语法。

正则表达式是一串字符,它描述了一个文本模式,利用它可以方便的处理文本,包括文本的查找、替换、验证、切分等。

正则表达式中的字符有两类,一类是普通字符,就是匹配字符本身,另一类是元字符,这些字符有特殊含义,这些元字符及其特殊含义就构成了正则表达式的语法。

正则表达式有一个比较长的历史,各种与文本处理有关的工具、编辑器和系统都支持正则表达式,大部分编程语言也都支持正则表达式。虽然都叫正则表达式,但由于历史原因,不同语言、系统和工具的语法不太一样,本文主要针对Java语言,其他语言可能有所差别。

下面,我们就来简要介绍正则表达式的语法,我们先分为以下部分分别介绍:

  • 单个字符
  • 字符组
  • 量词
  • 分组
  • 特殊边界匹配
  • 环视边界匹配

最后针对转义、匹配模式和各种语法进行总结。

单个字符

大部分的单个字符就是用字符本身表示的,比如字符'0','3','a','马'等,但有一些单个字符使用多个字符表示,这些字符都以斜杠'\'开头,比如:

  • 特殊字符,比如tab字符'\t',换行符'\n',回车符'\r'等;
  • 八进制表示的字符,以\0开头,后跟1到3位数字,比如\0141,对应的是ASCII编码为97的字符,即字符'a';
  • 十六进制表示的字符,以\x开头,后跟两位字符,比如\x6A,对应的是ASCII编码为106的字符,即字符'j';
  • Unicode编号表示的字符,以\u开头,后跟四位字符,比如\u9A6C,表示的是中文字符'马',这只能表示编号在0xFFFF以下的字符,如果超出0XFFFF,使用\x{...}形式,比如对于字符'

    Java编程的逻辑 (88) - 正则表达式 (上)的更多相关文章

    1. Java编程的逻辑 (90) - 正则表达式 (下 - 剖析常见表达式)

      本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

    2. Java编程的逻辑 (89) - 正则表达式 (中)

      本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

    3. Java编程的逻辑 (24) - 异常 (上)

      ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

    4. Java编程的逻辑 (35) - 泛型 (上) - 基本概念和原理

      本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

    5. 《Java编程的逻辑》 - 文章列表

      <计算机程序的思维逻辑>系列文章已整理成书<Java编程的逻辑>,由机械工业出版社出版,2018年1月上市,各大网店有售,敬请关注! 京东自营链接:https://item.j ...

    6. Java编程的逻辑 (92) - 函数式数据处理 (上)

      本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

    7. Java编程的逻辑 (6) - 如何从乱码中恢复 (上)?

      ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

    8. Java编程的逻辑 (26) - 剖析包装类 (上)

      本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

    9. Java编程的逻辑 (67) - 线程的基本协作机制 (上)

      ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

    随机推荐

    1. 骚气男孩saochi boy 唐砖 插曲

      试听下载链接:https://pan.baidu.com/s/1ObB9FYbgzegcE25io6zCEg

    2. 在UnrealEngine中用Custom节点实现描边效果

      在<Real Time Rendering, third edition>一书中,作者把描边算法分成了5种类型.1.基于观察角度与表面法线的轮廓渲染.缺点很明显.2.过程式几何轮廓渲染.即 ...

    3. php 将时间格式 转为时间戳

      <?php $gte = "2018-08-08"; $year=((int)substr($gte,0,4));//取得年份: $month=((int)substr($g ...

    4. 种花 [JZOJ4726] [可撤销贪心]

      Description 经过三十多个小时的长途跋涉,小Z和小D终于到了NOI现场——南山南中学.一进校园,小D就被花所吸引了(不要问我为什么),遍和一旁的种花园丁交(J)流(L)了起来. 他发现花的摆 ...

    5. 用shell脚本守护后台进程

      假如现在在 crond 中添加了一个每分钟执行的定时任务如下: */ * * * * root cd /data/sbin; sh test.sh >/dev/>& 为了防止上一个 ...

    6. Java 不变模式

      在阎宏博士的<JAVA与模式>一书中开头是这样描述不变(Immutable)模式的:一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式. 不变模式的结构 不变模式可增强对象的健 ...

    7. redis:list列表类型的操作

      1. list列表类型的操作 1.1. lpush/rpush key value [value ...] 链表的头部(左侧)或尾部(右侧)插入值 语法:lpush key value [value ...

    8. JS_高程5.引用类型(5)Array类型的操作方法

      一.操作方法 1.concat()方法 基于当前数组中的所有项创建一个新数组.具体说,是先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组.在没有给concat() ...

    9. 基于SwiperJs的H5/移动端下拉刷新上拉加载更多

      最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...

    10. pygame-KidsCanCode系列jumpy-part15-PowerUp加速器

      这一节我们给游戏增加点额外的奖励,大多数游戏中都会有金币.装备啥的来激励玩家,在jumpy这个游戏中,我们也可以增加类似的道具:加速器.效果图如下: 档板上会随机出现一些加速器(power up),小 ...