本系列文章经补充和完善,已修订整理成书《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. VeeamOne(Free Edition 9.5 )-安装与配置

      ---恢复内容开始--- Veeam ONE则主要用于监控平台之用,可以监控Veeam Backup & Replication的备份及同步情况,也可以监控VMware vSphere虚拟化平 ...

    2. skatebroads

      skateboardsn.滑板( skateboard的名词复数 ) == skateboard英 [ˈskeɪtbɔ:d]  . 斯给特博得. 美 [ˈskeɪtbɔ:rd] n.滑板复数: ska ...

    3. [Python] dict对象的keys()和values()返回的值,是否总是保证一一对应?

      搜dict的key, value顺序, 中文没搜到想要的结果. 英文答案链接:python-dictionary-are-keys-and-values-always-the-same-order 在 ...

    4. mongodb更新数组元素中的字段,数组$占位符

      pppCodes为数组,PPPCode,expiredOn为数组元素中的字段 db.getCollection('users').findOneAndUpdate({ _id: userId, 'pp ...

    5. React使用Styled-Componets来添加样式

      React使用Styled-Componets来添加样式 Styled-Comonents是用JS中ES6 语法的方式来管理CSS样式的一个组件,解决了在import CSS文件时样式重复 安装 项目 ...

    6. HDU5518 : John's Fences

      求出平面图的对偶图,那么需要选择一些环,使得这些环可以异或出所有环. 对于两个不同的区域,需要用一个代价最小的环把它们区分开,这对应最小割. 那么求出对偶图的最小割树,所有树边之和就是把所有区域都区分 ...

    7. java文件课后动手动脑

      package 第九周作业1; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...

    8. 将两个DataTable合并成一个DataTable

      转载自 http://blog.csdn.net/wangxiaojia42121/article/details/53330464 谢谢 //两个结构一样的DT合并DataTable DataTab ...

    9. list-循环小练习(作业已交未交)

      报错 list index out of range : 超出下标   这个错误是因为在写stus列表的时候写成了如下stus=['小花,未交'] ,但是取下标的时候取的是stus[1]:实际该列表中 ...

    10. std::lock_guard/std::unique_lock

      C++多线程编程中通常会对共享的数据进行写保护,以防止多线程在对共享数据成员进行读写时造成资源争抢导致程序出现未定义的行为.通常的做法是在修改共享数据成员的时候进行加锁--mutex.在使用锁的时候通 ...