一、正则表达式作用

正则表达式定义了字符串的模式,可以用于搜索、编辑或处理文本。

二、Java正则表达式语法规则

1.先清晰一个问题—— 转义字符

例如:

在C语言中,“\n”表示换行,同样的Java中我们也可以使用“\n”表示换行。对于单个“\”如“\\”,其后字符表示转义字符,输出一个反斜杠“\”。但是双“\\”则表明要插入正则表达式的反斜线,其后的字符具有特殊含义。所以在 Java 正则表达式中需要有两个反斜杠才能被解析为其他语言中的转义功能。或者说在 Java 正则表达式中,两个 \\ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \\d,而表示一个普通的反斜杠是 \\。如下所示。

System.out.print("\\");    // 输出为 \
System.out.print("\\\\");  // 输出为 \\

2.正则表达式语法

字符

说明

\

将下一字符标记为特殊字符、文本、反向引用或进制转义符。

例:“\n” 表示换行符,“\\(” 表示 "("。

^

匹配字符串开始输入的位置。

$

匹配输入的字符串最末位置。

*

零次或多次匹配前面的字符或子表达式。

例: zo* 匹配"z"和"zoo"。* 相当于 {0,}。

+

至少有一次匹配前面的字符或子表达式。

例: "zo+"与"zo"和"zoo"匹配,但与"z"不匹配。+ 相当于 {1,}。

?

零次或一次匹配前面的字符或子表达式。

例:"do(es)?"匹配"do"或"does"中的"do"。? 相当于 {0,1}。

{n}

匹配指定的 n 次。(n为非负整数)

例:"o{2}"与"food"中的两个"o"匹配。

{n,}

最少匹配 次。(n为非负整数)

例: "o{2,}",至少匹配2次,所以"foood"中有 3个o,匹配了3次。

{n,m}

最少匹配 n 次,最多匹配 m 次。(n、m为非负整数,n <= m

例:"o{1,3}"匹配1-3个o,所以匹配"fooooood"的前3个o。

PS:逗号和数字之间不能有空格。

?

字符 ? 紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,表示匹配模式是"非贪心的",其搜索尽可能短的字符串,默认的"贪心"模式搜索尽可能长的字符串。

例:在字符串"oooo"中,"o+?"只匹配单个"o",而"o+"匹配所有"o"。

.

匹配除"\r 和 \n"之外的任何单个字符。

(pattern)

匹配 pattern 并捕获该匹配的子表达式。若要匹配括号字符 ( ),使用"\("或者"\)"。

(?:pattern)

匹配 pattern 但不捕获该匹配的子表达式。

(?=pattern)

执行正向预测先行搜索的子表达式,匹配处于匹配 pattern 的字符串的起始点的字符串。

(?!pattern)

执行反向预测先行搜索的子表达式,匹配不处于匹配 pattern 的字符串的起始点的字符串。

x|y

匹配 x 或 y

例:'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"。

[ xyz ]

匹配包含在内的字符。

例:"[abc]"匹配"plainbc"中的"abc"。

[^xyz]

匹配不包含在内的字符。

例:"[^abc]"匹配"plain"中"p","l","i","n"。

[a-z]

匹配在范围内的字符。

例:"[a-z]"匹配a-z的所有小写字母。

[^a-z]

匹配不在范围内的字符。

例:"[^a-z]"匹配除a-z以外的字符。

\b

匹配边界字符。

例:"er\b"匹配边界上的"er",不匹配"verb"中间的"er"。

\B

不匹配边界字符。

例:"er\B"匹配"verb"中间的"er",不匹配"never"边界上的"er"。

\cx

匹配 x 指示的控制字符。(x 的值必须在 A-Z 或 a-z 之间)

例:\cM 匹配 Control-M 或回车符。

\d

数字字符匹配。相当于 [0-9]。

\D

非数字字符匹配。相当于 [^0-9]。

\f

换页符匹配。相当于 \x0c 和 \cL。

\n

换行符匹配。相当于 \x0a 和 \cJ。

\r

匹配一个回车符。相当于 \x0d 和 \cM。

\s

匹配任何空白字符,包括空格、制表符、换页符等。

\S

匹配任何非空白字符。

\t

制表符匹配。相当于 \x09 和 \cI 。

\v

垂直制表符匹配。相当于 \x0b 和 \cK 。

\w

匹配任何字类字符,包括下划线。相当于"[A-Za-z0-9_]"。

\W

与任何非单词字符匹配。相当于"[^A-Za-z0-9_]"。

\xn

匹配 n,此处的 n 是一个十六进制转义码。十六进制转义码必须正好是两位数长。

例:"\x41"匹配"A"。"\x041"与"\x04"&"1"等效。允许在正则表达式中使用 ASCII 代码。

\num

匹配 num,此处的 num 是一个正整数。到捕获匹配的反向引用。

例:"(.)\1"匹配两个连续的相同字符。

\n

标识一个八进制转义码或反向引用。如果 \n 前面至少有 n 个捕获子表达式,那么 n 是反向引用。否则,如果 n 是八进制数 (0-7),那么 n 是八进制转义码。

\nm

标识一个八进制转义码或反向引用。如果 \nm 前面至少有 nm 个捕获子表达式,那么 nm 是反向引用。如果 \nm 前面至少有 n 个捕获,则 n 是反向引用,后面跟有字符 m。如果两种前面的情况都不存在,则 \nm 匹配八进制值 nm,其中 和 m 是八进制数字 (0-7)。

\nml

当 n 是八进制数 (0-3),m 和 l 是八进制数 (0-7) 时,匹配八进制转义码 nml

\un

匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符。

例:\u00A9 匹配版权符号 (©)。

写在最后, 需要区分不同哦:

        在“Java语言规范”中,位于字符串中的单个反斜线(“\”)会被解释为“转义字符”。因此必须在字符串中使用双反斜线(“\\”)才代表正则表达式,从而不被 Java 字节码编译器解释。

        例:“\b” 表示 退格;而 "\\b" 为正则表达式,表示匹配边界字符。

        例: "\(hello\)" 是非法的;加上“\\” 后表示正则表达式,合法 "\\(hello\\)"。

Java正则表达式语法规则(具体)相关推荐

  1. (常用API)正则表达式语法规则

    正则表达式的匹配规则 参照帮助文档,在Pattern类中有正则表达式的的规则定义,正则表达式中明确区分大小写字母.我们来学习语法规则. 正则表达式的语法规则: 字符:x 含义:代表的是字符x 例如:匹 ...

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

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

  3. java正则表达式语法

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

  4. PHP正则表达式语法规则

    什么是正则表达式? 正则表达式是一种描述字符串结构的语法规则,是一个特定的格式化模式,可以匹配.替换.截取匹配的字符.对于用户来说可能以前接触过DOS,如果想匹配当前文件下所有的文件文本,可以输入&q ...

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

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

  6. 正则表达式语法规则收集

    turnmissile 的 Blog http://blog.csdn.net/turnmissile/ Microsoft已经把正则表达式的规则收录在了msdn里面了,有兴趣的朋友可以自己去研究一下 ...

  7. 初学者必备——三大类18条Java正则表达式语法

    关于Java中的正则表达式语法,既然是基础知识,那我们就从概念说起了.   概念与作用   正则表达式是一串字符,它描述了一个文本模式,利用它可以方便地处理文本,包括文本的查找.替换.验证.切分等. ...

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

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

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

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

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

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

最新文章

  1. oracle可视化工具IB,oracle小记:dba_data_files
  2. 风投报告:2017下半年VR/AR娱乐领域投资额同比上升79% 【52翻译】
  3. ONAP — Overview
  4. 8个容易被忽略但不能忽略的SD-WAN功能
  5. (六十三)第四章复习题
  6. 工作中常用的kafka命令
  7. 爱立信数据分析解决方案抓住物联网发展机遇
  8. ASP.Net网站部署失败
  9. java 测试工具 oracle_SwingBench---ORACLE压力测试工具
  10. 部队计算机操作使用教案,计算机基础教案2(键盘鼠标操作).doc
  11. outsystems刚做项目时的注意点-划重点
  12. 打字_盲打训练/打字训练网站(updating)/打字测速网站
  13. Python语法--Mooc七月
  14. 【CTO讲堂】企业该如何打造自身的“安全免疫系统”?
  15. 罗永浩2011年保利剧院演讲(一个理想主义者的创业故事II)
  16. 1-乙基-3-甲基咪唑四氟硼酸盐/[C2MIm]BF4/cas:143314-16-3/分子量:197.97/离子液体
  17. credssp(credssp加密数据库修正 server2016)
  18. 计算机数据恢复试题,数据恢复试卷含笔答实操题a
  19. Tabu Search求解作业车间调度问题(Job Shop Scheduling)-附Java代码
  20. Mozilla XUL分析

热门文章

  1. 数字图像处理:实验七 遥感图像读取
  2. 如何关闭mac的SIP
  3. hbase基础操作命令
  4. HttpUtils发送delete方法
  5. 一键GHOST v2019.08.12优盘教程
  6. ae效果英文版翻译对照表_AE 特效中英翻译
  7. SPEOS | SPEOS HUD 设计功能
  8. 基于matlab的中值滤波算法浅析
  9. VS2010 快捷键
  10. 本地编译AndroidX源码