关于Java中的正则表达式语法,既然是基础知识,那我们就从概念说起了。

  概念与作用  

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

  字符的分类  

正则表达式中的字符有两类:

普通字符:匹配字符本身

元字符:有特殊含义的字符

这些元字符及其特殊含义构成了正则表达式的语法。

  单个字符  

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

1)特殊字符

举例:

tab字符'\t'

换行符'\n'

回车符'\r'

2)八进制表示的字符

以\0开头,后跟1~3位数字,比如\0141,对应的是ASCII编码为97的字符,即字符'a'。

3)十六进制表示的字符

以\x开头,后跟两位字符,比如\x6A,对应的是ASCII编码为106的字符,即字符'j'。

4)Unicode编号表示的字符

以\u开头,后跟4位字符,比如\u9A6C,表示的是中文字符'马',这只能表示编号在0xFFFF以下的字符,如果超出0ⅩFFFF,使用\x{...}形式,比如\x{1f48e}。

5)斜杠\本身

斜杠\是一个元字符,如果要匹配它自身,使用两个斜杠表示,即'\\'。

6)元字符本身

除了 '\',正则表达式中还有很多元字符,比如.、*、? 、+等,要匹配这些元字符自身,需要在前面加转义字符'\',比如'\.'。

  字符组  

字符组的种类很多,包括:任意字符、多个指定字符之一、字符区间、排除型字符组、预定义的字符组等。

1️⃣ 点号字符'.'是一个元字符,默认模式下,它匹配除了换行符以外的任意字符。

举例:既可以表示“abc” 也可以表示"adc"

a.c

2️⃣ 如果想真正的匹配包括换行符在内的任意字符,则可以使用单行匹配模式或者点号匹配模式。在正则表达式中,以(? s)开头,s表示single line,即可指定单行匹配模式

举例:指定单行匹配模式

(? s)a.c

3️⃣ 在单个字符和任意字符之间,有一个字符组的概念,匹配组中的任意一个字符,用中括号[]表示。

举例:匹配a、b、c中的任意一个字符

[abc]

4️⃣ 字符组中可以使用连字符'-'来表示连续的多个字符

[0-9]

[a-zA-Z]

注意:在字符组中,'-'是一个元字符,如果要匹配它自身,可以使用转义,即'-',或者把它放在字符组的最前面。

举例:

[-0-9]

[-a-zA-Z]

5️⃣ 在[后紧跟一个 ^ 字符,表示排除

举例:匹配除了a, b, c,以外的任意一个字符

[^abc]

注意:排除不是不能匹配,而是匹配一个指定字符组以外的字符,要表达不能匹配的含义,需要使用环视语法。^只有在字符组的开头才是元字符,如果不在开头,就是普通字符,匹配它自身。

举例:匹配字符a, ^或b

[a^b]

6️⃣ 在字符组中,除了^、-、[ ]、\外,其他在字符组外的元字符不再具备特殊含义,变成了普通字符,比如字符'.'和'*', [.*]就是匹配'.'或者'*'本身。

  量词  

量词指的是指定出现次数的元字符,有三个常见的元字符:+、*、?

1)+

表示前面字符的一次或多次出现,比如正则表达式ab+c,既能匹配abc,也能匹配abbc,或abbbc。

2)*

表示前面字符的零次或多次出现,比如正则表达式ab*c,既能匹配abc,也能匹配ac,或abbbc。

3)?

表示前面字符可能出现,也可能不出现,比如正则表达式ab? c,既能匹配abc,也能匹配ac,但不能匹配abbc。

更为通用的表示出现次数的语法是{m, n},逗号左右不能有空格,出现次数从m到n,包括m和n,如果n没有限制,可以省略,如果m和n一样,可以写为{m}

举例:与ab+c等价的写法

ab{1, }c

相信大家在掌握了正则表达式的语法后,再去处理文本的查找、替换、验证、切分等场景时会易如反掌。

初学者必备——三大类18条Java正则表达式语法相关推荐

  1. (转)JAVA正则表达式语法大全

    [正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n ...

  2. java正则表达式语法

    java正则表达式语法 这里简单总结一下我对java里的正则表达式一部分语法的学习 一. 普通字符 字母.数字.汉字.下划线,以及其他没有特殊含义的字符都可作为正则表达式匹配他们本身.例如正则表达式& ...

  3. java正则表达式语法(java正整数正则表达式)

    java正则表达式 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明: "^The": 开头一定要有"The"字符串; "of de ...

  4. 【C语言】C语言初学者常犯的18条错误

    错误1:scanf中丢失& int a; printf("Enter an integer:\t"); scanf("%d", a); 上面的代码第3行 ...

  5. java matcher方法_9 Matcher 类的方法 - Java 正则表达式教程

    在这一节中来看看 Matcher 类中其他一些有用的方法.方便起见,下面列出的方法是按照功能来分组的. 索引方法 索引方法(index methods)提供了一些正好在输入字符串中发现匹配的索引值: ...

  6. java 正则表达式语法_Java 正则表达式基础语法

    基础符号 首尾匹配^:匹配输入字符串开始的位置 $:匹配输入字符串结尾的位置 例:"^hello$"含义为该字符串开头必须为h,结尾必须为oprivate static void ...

  7. Java正则表达式总结 ^_^

    引用 B站韩顺平正则表达式精讲 菜鸟教程 正则表达式30分钟入门教程 Java正则表达式介绍   正则表达式(Regular Expression)-- 是一种对字符串操作的逻辑公式,用事先定义好的特 ...

  8. java 正则表达式 demo_JAVA正则表达式语法

    JAVA正则表达式语法(转) 正则表达式语法 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符").模式描述在搜索文本时要匹配的一个或 ...

  9. Java正则表达式的语法与示例

    Java正则表达式的语法与示例 正则表达式是什么?用我的理解就是一个表达式.用来匹配,替换,判断字符串,之前业务就出现过判断返回值是否为邮箱. 以下内容来自于http://baike.xsoftlab ...

最新文章

  1. 365个机器学习概念,“耐撕”的AI日历限量预售 | 新年礼物嗷~
  2. 谷歌、苹果等大佬亲自戳穿自动驾驶完美童话,技术、场景、安全牢笼实难突围!...
  3. 如何让企业引起对网站运营优化的重视程度呢?
  4. OVS vswitchd启动(三十七)
  5. C#-修改图书借阅管理系统-错误与SQL server 2008错误、复制数据库
  6. 程序员都喜欢抄袭“代码”,而且还拿着高薪?难道就这么无法无天
  7. SQL常用命令和操作
  8. python库skimage 图像直方图均衡化、自适应均衡化、对比度拉伸实现
  9. webservice 实现通知支付结果到OA
  10. c语言pow函数算力,c语言pow函数算力
  11. 基于HFSS的圆形左旋圆极化贴片天线仿真分析
  12. 阿里云免费个人Docker镜像仓库搭建
  13. kotlin Anko的实际用法
  14. flutter 复制粘贴默认英文显示问题
  15. Docker三剑客——Docker Compose
  16. [hdu6595]Everything Is Generated In Equal Probability
  17. Android GNSS 可视卫星星空图/卫星天顶图 原理及画法介绍
  18. 增值税发票扫描识别|发票扫描识别|发票识别
  19. 网易云音乐等级快速升级 - 每天打卡听歌300首
  20. div 内 图片 垂直居中

热门文章

  1. maven项目原型可以通过选择生成,而不用具体在命令中指定。
  2. 电脑录音软件怎么录音
  3. 思科刀片服务器系统,思科UCS平台:B460 M4刀片服务器解读
  4. 关于对象转json字符串的几个工具比较
  5. [Python] Basemap入坑手册 - 地图投影示例
  6. Ubuntu 镜像站使用帮助 清华大学开源软件镜像站
  7. JAVA简介及其编码规范
  8. vue导出excel模板
  9. ART–KOHONEN neural network for fault diagnosis of rotating machinery(翻译)
  10. PyQt5 - QSS