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为非负整数)

例: “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\\)”。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c语言基础知识菜鸟_c语言入门基础100题

    c语言基础知识菜鸟_c语言入门基础100题菜鸟教程之C语言基础(上)一、前言:前几天,在看另一个教程视频,总感觉太啰嗦,讲的东西不符合我想要的。这里,通过菜鸟教程,看一遍文档,打一遍笔记,想通过这样学一下C语言的基础。感谢菜鸟教程。

  • reduce实现数组求和_js数组reduce

    reduce实现数组求和_js数组reducereducereduce收敛4个参数,返回的是叠加后的结果,原数组不发生变化,回调函数返回的结果//从左向右//prev代表前一项,cur代表当前项【求和】letarr=[1,3,5,8,9,7];letsum=arr.reduce(function(prev,cur,index,arr){ //return100;//本次的返回值…

  • C语言数组反转

    C语言数组反转一个C语言程序代码,反转数组。题目:编写一个函数,实现传入的整型数据各位数字的逆序重排,比如:传入1278,函数返回值为8721;传入-257,函数返回值为-752;传入510,函数返回值为15。#include<stdio.h>#include<stdlib.h>#include<math.h>#definemaxArraySize100//定义数组最大长度,防止输入的整型数据超出int表示的范围intinverseIntAr

  • 微商分销代理商城源码-代理等级和升级条件

    微商分销代理商城源码-代理等级和升级条件介绍:微商分销代理商城源码基于think框架开发是一款微商分销代理商城源码,可以自己设置代理等级和升级条件(如购买指定商品、消费额度)网站搭建方式介绍:测试环境php7.0+mysql5.6数据库配置文件\application\database.php后台/admin用户:admin密码:123456网盘下载地址:http://kekewl.cc/jpaQnrd7VcZ0图片:网站源码首页截图演示网站后台截图演示…

  • 背包九讲——完全背包

    背包九讲——完全背包完全背包是01背包的加强版,先来看看《背包问题九讲》里是怎么描述这个问题的:题目有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。所属专栏:戳我访问再来看看《背包问题九讲》是怎么解决这个问题的:基本思路这个问题非常类似于01背包问题,所不同

  • XAMPP安装Windows10

    XAMPP安装Windows10下载XAMPPhttps://sourceforge.net/projects/xampp/files/我下载的是XAMPP7.4.3之后直接双击安装,尽量不要装在C盘,一直点下一步就好了安装完成后会有这样的界面(XAMPP控制面板窗口)(Apache和MySQL之前有写安装教程)点击“Apache”的“Config”键选择“Apache(httpd.conf)”,打开配置文件找…

发表回复

您的电子邮箱地址不会被公开。

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