Java正则表达式语法规则(具体)

Java正则表达式语法规则(具体)Java正则表达式语法规则(具体)

大家好,又见面了,我是你们的朋友全栈君。

一、正则表达式作用

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

二、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 次。(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,其中 n 和 m 是八进制数字 (0-7)。

\nml

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

\un

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161590.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Window永久关闭默认共享

    windows默认共享你如果是在这里关闭的,开机之后默认共享文件夹又是打开的。管理工具—计算机管理—共享文件夹–共享下面介绍一种简单的永久关闭默认共享文件夹。1.找到window的开机自启动文件夹,注:这是所有用户登录都会开机自启动文件夹。C:\ProgramData\Microsoft\Windows\StartMenu\Programs\StartUp2.创建一个bat脚本,然后开机就能自动关闭默认共享文件夹。…

    2022年4月7日
  • CSS div隐藏滚动条「建议收藏」

    CSS div隐藏滚动条「建议收藏」隐藏指定div或者滚动标签里面的滚动条。<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metaname=”viewport”content=”width=device-width,initial-scale=1.0″><title>Document</title><style>/*.

    2022年10月28日
  • linux 解压缩zip文件 unzip 命令详解[通俗易懂]

    linux 解压缩zip文件 unzip 命令详解[通俗易懂]linuxunzip命令详解功能说明:解压缩zip文件语法:unzip[-cflptuvz][-agCjLMnoqsVX][-P][.zip文件][文件][-d][-x]或unzip[-Z]补充说明:unzip为.zip压缩文件的解压缩程序。参数:-c将解压缩的结果显示到屏幕上,并对字符做适当的转换。-f更新现有的文件。

    2022年6月5日
  • pytest指定用例_pytest执行多个py文件

    pytest指定用例_pytest执行多个py文件前言测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果.有些同学在写用例的时候,用例写了先后顺序,有先后顺序后,后面还会有新的问题(如:上个用例返回

    2022年7月28日
  • Camstar CDO增加自定义字段

    Camstar CDO增加自定义字段本节讲述如何在Camstar原生CDO里加入自定义字段进入Designer,打开CDO页,找到要增加字段的CDO,打开,切换到Fields页,点击下面的Add按钮。在弹出的窗口中,输入相应的数据:DataType增加的字段的数据类型,字符串、整数、浮点数、Object等FieldType字段类型,描述字段的具体用处,不同类型的数据字段长度是不同的(比如字符串的长度)Name字段名称,也是数据库表里的默认字段名称Caption字段描述,也是在Modeling配置页面里对应字段的名称点

    2022年10月29日
  • python中for循环语句例子_for循环语句格式

    python中for循环语句例子_for循环语句格式有时候我们在使用python进行编程的时候,想使用for语句,下面来介绍一下for语句的使用方法工具/原料pythonfor语句的使用方法和实例方法/步骤1第一步我们首先需要知道python中for语句主要用于迭代遍历字符串,列表,元组等,首先输入“foriin”abcdefg”:print(i)”遍历字符串,如下图所示:2第二步运行py文件之后,可以看到将字符串abcdefg中的元素全部遍…

    2022年8月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号