Java正则表达式的意义说明

C# 正则表达式详解(学习心得 25) 正则表达式 是一种匹配输入文本的模式。 .Net 框架提供了允许这种匹配的正则表达式引擎。 使用以下字符,运算符,结构,来定义正则表达式: 转义字符 字符类 定位点 分组构造 限定符 反向引用构造 备用构造 替换 杂项构造 文章目录一、转义字符二、字符类三、定位点四、分组构造4.1 (?= subexpression) 详解4.2 (?! subexpression) 详解4.3 (?<=subexpression) 详解4.4 (?<!subexpression) 详解4.5 (?> 阅读详情

表达式意义:

1.字符
x    字符 x。例如a表示字符a
\\    反斜线字符。在书写时要写为\\\\。(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义字符,包括1.1的\\,而又带有\的都要写两次)
\0n    带有八进制值 0的字符 n (0 <= n <= 7)
\0nn    带有八进制值 0的字符 nn (0 <= n <= 7)
\0mnn    带有八进制值 0的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh    带有十六进制值 0x的字符 hh
\uhhhh    带有十六进制值 0x的字符 hhhh
\t    制表符 ('\u0009')
\n    新行(换行)符 ('\u000A')
\r    回车符 ('\u000D')
\f    换页符 ('\u000C')
\a    报警 (bell) 符 ('\u0007')
\e    转义符 ('\u001B')
\cx    对应于 x 的控制符
2.字符类
[abc]    a、b或 c(简单类)。例如[egd]表示包含有字符e、g或d。
[^abc]    任何字符,除了 a、b或 c(否定)。例如[^egd]表示不包含字符e、g或d。
[a-zA-Z]    a到 z或 A到 Z,两头的字母包括在内(范围)
[a-d[m-p]]    a到 d或 m到 p:[a-dm-p](并集)
[a-z&&[def]]    d、e或 f(交集)
[a-z&&[^bc]]    a到 z,除了 b和 c:[ad-z](减去)
[a-z&&[^m-p]]    a到 z,而非 m到 p:[a-lq-z](减去)
3.预定义字符类(注意反斜杠要写两次,例如\d写为\\d)任何字符

(与行结束符可能匹配也可能不匹配)
\d    数字:[0-9]
\D    非数字: [^0-9]
\s    空白字符:[ \t\n\x0B\f\r]
\S    非空白字符:[^\s]
\w    单词字符:[a-zA-Z_0-9]
\W    非单词字符:[^\w]
4.POSIX 字符类(仅 US-ASCII)(注意反斜杠要写两次,例如\p{Lower}写为\\p{Lower})
\p{Lower}    小写字母字符:[a-z]。
\p{Upper}    大写字母字符:[A-Z]
\p{ASCII}    所有 ASCII:[\x00-\x7F]
\p{Alpha}    字母字符:[\p{Lower}\p{Upper}]
\p{Digit}    十进制数字:[0-9]
\p{Alnum}    字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct}    标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph}    可见字符:[\p{Alnum}\p{Punct}]
\p{Print}    可打印字符:[\p{Graph}\x20]
\p{Blank}    空格或制表符:[ \t]
\p{Cntrl}    控制字符:[\x00-\x1F\x7F]
\p{XDigit}    十六进制数字:[0-9a-fA-F]
\p{Space}    空白字符:[ \t\n\x0B\f\r]
5.java.lang.Character 类(简单的 java 字符类型)
\p{javaLowerCase}    等效于 java.lang.Character.isLowerCase()
\p{javaUpperCase}    等效于 java.lang.Character.isUpperCase()
\p{javaWhitespace}    等效于 java.lang.Character.isWhitespace()
\p{javaMirrored}    等效于 java.lang.Character.isMirrored()
6.Unicode 块和类别的类
\p{InGreek}    Greek 块(简单块)中的字符
\p{Lu}    大写字母(简单类别)
\p{Sc}    货币符号
\P{InGreek}    所有字符,Greek 块中的除外(否定)
[\p{L}&&[^\p{Lu}]]     所有字母,大写字母除外(减去)
7.边界匹配器
^    行的开头,请在正则表达式的开始处使用^。例如:^(abc)表示以abc开头的字符串。注意编译的时候要设置参数MULTILINE,如 Pattern p = Pattern.compile(regex,Pattern.MULTILINE);
$    行的结尾,请在正则表达式的结束处使用。例如:(^bca).*(abc$)表示以bca开头以abc结尾的行。
\b    单词边界。例如\b(abc)表示单词的开始或结束包含有abc,(abcjj、jjabc 都可以匹配)
\B    非单词边界。例如\B(abc)表示单词的中间包含有abc,(jjabcjj匹配而jjabc、abcjj不匹配)
\A    输入的开头
\G    上一个匹配的结尾(个人感觉这个参数没什么用)。例如\\Gdog表示在上一个匹配结尾处查找dog如果没有的话则从开头查找,注意如果开头不是dog则不能匹配。
\Z    输入的结尾,仅用于最后的结束符(如果有的话)
行结束符 是一个或两个字符的序列,标记输入字符序列的行结尾。
以下代码被识别为行结束符: 
‐新行(换行)符 ('\n')、 
‐后面紧跟新行符的回车符 ("\r\n")、 
‐单独的回车符 ('\r')、 
‐下一行字符 ('\u0085')、 
‐行分隔符 ('\u2028') 或 
‐段落分隔符 ('\u2029)。
\z    输入的结尾
当编译模式时,可以设置一个或多个标志,例如
Pattern pattern = Pattern.compile(patternString,Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
下面六个标志都是支持的:
‐CASE_INSENSITIVE:匹配字符时与大小写无关,该标志默认只考虑US ASCII字符。
‐UNICODE_CASE:当与CASE_INSENSITIVE结合时,使用Unicode字母匹配
‐MULTILINE:^和$匹配一行的开始和结尾,而不是整个输入
‐UNIX_LINES: 当在多行模式下匹配^和$时,只将'\n'看作行终止符
‐DOTALL: 当使用此标志时,.符号匹配包括行终止符在内的所有字符
‐CANON_EQ: 考虑Unicode字符的规范等价
8.Greedy 数量词
X?    X,一次或一次也没有
X*    X,零次或多次
X+    X,一次或多次
X{n}    X,恰好 n 次
X{n,}    X,至少 n 次
X{n,m}    X,至少 n 次,但是不超过 m 次
9.Reluctant 数量词
X??    X,一次或一次也没有
X*?    X,零次或多次
X+?    X,一次或多次
X{n}?    X,恰好 n 次
X{n,}?    X,至少 n 次
X{n,m}?    X,至少 n 次,但是不超过 m 次
10.Possessive 数量词
X?+    X,一次或一次也没有
X*+    X,零次或多次
X++    X,一次或多次
X{n}+    X,恰好 n 次
X{n,}+    X,至少 n 次
X{n,m}+    X,至少 n 次,但是不超过 m 次
Greedy,Reluctant,Possessive的区别在于:(注意仅限于进行.等模糊处理时)
greedy量 词被看作“贪婪的”,因为它第一次就读入整个被模糊匹配的字符串。如果第一个匹配尝试(整个输入字符串)失败,匹配器就会在被匹配字符串中的最后一位后退一个字符并且再次尝试,重复这个过程,直到找到匹配或者没有更多剩下的字符可以后退为止。根据表达式中使用的量词,它最后试图匹配的内容是1 个或者0个字符。
但是,reluctant量词采取相反的方式:它们从被匹配字符串的开头开始,然后逐步地一次读取一个字符搜索匹配。它们最后试图匹配的内容是整个输入字符串。
最后,possessive量词总是读完整个输入字符串,尝试一次(而且只有一次)匹配。和greedy量词不同,possessive从不后退。
11.Logical 运算符
XY    X 后跟 Y
X|Y    X 或 Y
(X)    X,作为捕获组。例如(abc)表示把abc作为一个整体进行捕获
12.Back 引用
\n    任何匹配的 nth捕获组
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C)))中,存在四个这样的组: 
1        ((A)(B(C)))
2        \A
3        (B(C))
4        (C)
在表达式中可以通过\n来对相应的组进行引用,例如(ab)34\1就表示ab34ab,(ab)34(cd)\1\2就表示ab34cdabcd。
13.引用
\    Nothing,但是引用以下字符
\Q    Nothing,但是引用所有字符,直到 \E。QE之间的字符串会原封不动的使用(1.1中转义字符的除外)。例如, ab\\Q{|}\\\\E
可以匹配ab{|}\\
\E    Nothing,但是结束从 \Q开始的引用
14.特殊构造(非捕获)
(?:X)    X,作为非捕获组
(?idmsux-idmsux)     Nothing,但是将匹配标志由 on 转为 off。比如:表达式 (?i)abc(?-i)def 这时,(?i) 打开不区分大小写开关,abc 匹配
idmsux说明如下:
‐i CASE_INSENSITIVE :US-ASCII 字符集不区分大小写。(?i)
‐d UNIX_LINES : 打开UNIX换行符
‐m MULTILINE :多行模式(?m)
UNIX下换行为\n
WINDOWS下换行为\r\n(?s)
‐u UNICODE_CASE : Unicode 不区分大小写。(?u)
‐x COMMENTS :可以在pattern里面使用注解,忽略pattern里面的whitespace,以及"#"一直到结尾(#后面为注解)。(?x)例如(?x)abc#asfsdadsa可以匹配字符串abc
(?idmsux-idmsux:X)     X,作为带有给定标志 on - off 的非捕获组。与上面的类似,上面的表达式,可以改写成为:(?i:abc)def,或者 (?i)abc(?-i:def)
(?=X)    X,通过零宽度的正 lookahead。零宽度正先行断言,仅当子表达式 X 在 此位置的右侧匹配时才继续匹配。例如,\w+(?=\d) 表示字母后面跟数字,但不捕获数字(不回溯)
(?!X)    X,通过零宽度的负 lookahead。零宽度负先行断言。仅当子表达式 X 不在 此位置的右侧匹配时才继续匹配。例如,\w+(?!\d) 表示字母后面不跟数字,且不捕获数字。
(?<=X)    X,通过零宽度的正 lookbehind。零宽度正后发断言。仅当子表达式 X 在 此位置的左侧匹配时才继续匹配。例如,(?<=19)99 表示99前面是数字19,但不捕获前面的19。(不回溯)
(? (?>X)    X,作为独立的非捕获组(不回溯)
(?=X)与(?>X)的区别在于(?>X)是不回溯的。例如被匹配的字符串为abcm
当表达式为a(?:b|bc)m是可以匹配的,而当表达式是a(?>b|bc)时是不能匹配的,因为当后者匹配到b时,由于已经匹配,就跳出了非捕获组,而不再次对组内的字符进行匹配。可以加快速度。

如何在命令行中显示五彩斑斓的“黑” 1. 前言 大部分 coder 已经习惯了命令行枯燥的黑底白字,而且任何编程语言入门的第一行代码都是教我们如何在标准输出(大部分情况就是命令行终端或控制台)打印一行“非黑即白”的 hello world! 。以至于很多不懂编程的“大佬”都觉得程序猿们都TM奇了个葩了,整天对着一块黑屏,瞎JB敲来敲去,还TM当个宝似的。那么本文将告诉你,这不仅仅是一块黑屏,它还能黑得五彩斑斓,亮瞎????眼。。。哈哈哈。... 阅读详情

相关推荐

linux中五颜六色的文字

输出红色 \u001b[0;31mNot running\u001b[0m\n 输出绿色 \u001b[0;32mRunning [2640]\u001b[0m\n why? 解释是这样的: The original specification only had 8 colors, and just gave them names. The SGR parameters 30-37 selected the foreground color, while 40-47 selected the back

weixin_42551921的博客 1054

java正则表达式类_未公开的Java正则表达式字符类:\ p {C}

我在Java项目中发现了一个有趣的正则表达式: "[\\p{C}&&\\S]"我知道方法的&&意思是“设置交集”,并且\S是“非空白”,但是 什么是\p{C},可以使用吗?该java.util.regex.Pattern中的文件没有提到它。列表上唯一类似的类是\p{Cntrl},但是它们的行为有所不同:它们都在控制字符上\p{C}匹配,但在U+ FFFF以上的Uni...

weixin_31060209的博客 2963

【破局之道】LangChain4j 0.31.0 + Java 8 + Spring Boot:在“过时”环境中构建本地大模型应用的实战指南

本文为使用Java 8和Spring Boot等“过时”技术栈的团队提供了构建本地大模型应用的实战指南。通过采用LangChain4j 0.31.0这一兼容版本,结合Ollama部署本地大模型,开发者无需升级JDK即可在现有项目中快速集成AI能力,实现智能问答、文档摘要等功能,为传统项目注入创新活力。

t4y5u6i7o的博客 557

Java正则表达式的解释说明

转自http://www.blogjava.net/Werther/archive/2009/06/10/281198.html  表达式意义:1.字符x    字符 x。例如a表示字符a//    反斜线字符。在书写时要写为////。(注意:因为java在第一次解析时,把////解析成正则表达式//,在第二次解析时再解析为/,所以凡是不是1.1列举到的转义字符,包括1.1的//,

Liuwenhao866595的专栏 459

ESP32实战:破解校园网WPA2-Enterprise认证的完整指南

本文详细介绍了如何使用ESP32开发板破解校园网WPA2-Enterprise认证的完整指南。通过硬件准备、环境搭建、核心代码实现及常见问题排查,帮助开发者解决企业级WiFi连接难题,特别适用于校园网环境下的物联网设备开发。

weixin_29194817的博客 454

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 948

正则表达式

6、[ ]:代表的是一定的范围,例如:[abc],表示只能取自abc的其中一个或多个;[a-z],表示取自所有的小写字母,^:代表取反,取‘^’后不同的字符。3、{a,b}:代表前面的字符可以出现a到b次,其中b可以省略不写,代表字符可以出现a次以上,a不可省略。学习过正则表达式之后感觉其还是很实用的,我会在以后经常使用的,力争完全掌握,加油!11、\b:代表匹配隐式位置上述的表达式的字母如果大写就代表与原来的相反。9、\w:代表所有的单词字符,包括数字,字母,下划线。8、\d:代表所有的数字。

fangjianj的博客 204

从原理到实践:详解RGBD相机深度与彩色图像对齐(D2C)算法

本文深入解析了RGBD相机深度与彩色图像对齐(D2C)算法的原理与实现。针对自组装相机中深度图与彩色图不匹配的核心痛点,文章从相机模型、坐标系变换等数学基础讲起,剖析了传统点映射算法的缺陷,并重点介绍了高效的矩形区域映射算法。该算法通过将深度像素视为矩形区域进行映射,有效解决了空洞和遮挡问题,并附有可直接复用的C++代码与优化技巧,为三维重建、机器人视觉等应用奠定坚实基础。

weixin_28363123的博客 242

java正则表达式学习_Java正则表达式学习与记录

正则表达式定义了字符串的模式,用于搜索、编辑或处理文本。1、正则表达式中字符意义:\ 将下一字符标记为特殊字符。^ 匹配输入字符串开始的位置。$ 匹配输入字符串结束的位置。* 零次或多次匹配前面的字符或子表达式。+ 一次或多次匹配前面的字符或子表达式。? 零次或一次匹配前面的字...

weixin_42099633的博客 83

Python办公自动化:用python-docx打造专业级Word表格边框(附完整代码)

本文深入探讨了如何利用python-docx库精细控制Word表格边框,实现办公自动化。通过解析底层XML结构,提供了通用的`set_cell_border`函数,并附上完整代码,帮助用户轻松打造符合商业规范的专业级表格,提升报告、合同等文档的生成效率与视觉效果。

weixin_29089057的博客 546

一个 ABAP 工具,能打印系统里某个用户对 BSP 应用的浏览历史记录

只要一个用户在 SAP ABAP 系统里浏览过 BSP 页面,会留下浏览历史记录。本工具会解析出这些记录,打印出该用户浏览的历史事件,和浏览过的页面名称。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 546

24-Java正则表达式

(与行结束符可能匹配也可能不匹配)\d 数字:[0-9]\D 非数字: [^0-9]\s 空白字符:[ \t\n\x0B\f\r]\S 非空白字符:[^\s]\w 单词字符:[a-zA-Z_0-9]\W 非单词字符:[^\w]

美好开始来了 950

C#串口通信从入门到精通(21)——一个串口多线程发送数据

本文详细介绍了串口通信中采用多线程发送串口数据的解决方案,由多年实战经验总结,绝对干货!

qq_34059233的博客 3690

Java正则表达式的解释说明(码住)

表达式意义: 1.字符 x    字符 x。例如a表示字符a \\    反斜线字符。在书写时要写为\\\\。(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义字符,包括1.1的\\,而又带有\的都要写两次) \0n    带有八进制值 0的字符 n (0 &lt;= n &lt;= 7) \0nn    带有八进制值 0...

A2Z的博客 302

【OpenClaw从入门到精通】第45篇:Skill供应链安全——如何识别并避开恶意技能插件?(2026实测版)

随着OpenClaw生态爆发式增长,全球Skills总量近75万个,日均新增2.1万个,但恶意/问题插件已超600个,数十万用户受影响。本文基于奇安信威胁报告及360安全实践,拆解恶意技能的五大核心特征,提出"安装前三步法"安全审查流程,详解安全技能来源白名单与定期审计方案,并深度解析360龙虾Skill安全超市的分级认证机制。读者可掌握从技能筛选、安装审查到术后审计的全流程安全防护手段,通过实操命令与案例演示,零成本构建Skill供应链安全防线,避免遭遇私钥窃取、资产损失等安全事件。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 564

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

一文秒懂java正则表达式中的“整个匹配“【深入理解正则表达式中的“整个匹配“】

(Whole Match)指的是正则表达式模式在整个输入字符串中成功匹配的。它对应着或。

ljh_learn_from_base的博客 237

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

关于正则表达式*为什么会在行尾匹配出一个空串

正则表达式限定符*总是匹配出空串出来,而且行尾总是会多一个空串

w55935的博客 883

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java 正则表达式

介绍 前段时间使用Java的正则表达式做一些字符串匹配的任务,现将学到的正则表达式的知识整理成文。 Java中Spring.class涉及到正则表达式。如Spring.split(), matches(),replaceAll()等方法。 Java中更一般使用正则表达式的方式是利用Pattern.class和Matcher.class,所在package为java.util.regex J...

学而不厌 诲人不倦 3万+

Java——正则表达式详解

Java对正则表达式的支持是从1.4版本开始的,此前的JRE版本不支持正则表达式。Java语言中的正则表达式匹配功能主要是通过和类实现的。find():在一个字符串里寻找一个给定模式的匹配:用一个给定的模式尝试匹配一个字符串的开头matches():用一个给定的模式去尝试匹配一个完整的字符串:进行替换操作,对所有的匹配都进行替换:进行替换操作,只对第一个匹配进行替换compile():把一个正则表达式编译成一个模式flags():返回某给定模式的匹配标志matches()

吴声子夜歌的博客 2万+

Java正则表达式

介绍并简单使用Java正则表达式

m0_62946761的博客 7255

正则表达式中的\\\\的意义

public class SplitString { public static String[] f(String s) { return s.split("\\+|\\-|\\/|\\*|\\\\"); } public static void main(String[] args) { System.out.println("12+35*5-2*18/9-3\\6...

PI_PIBOY的博客 4924

JAVA中校验密码的正则表达式

正则表达式是一种描述字符串集合的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于探索、编辑或者操作文本和数据。它超出了java程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式。正则表达式的变化是复杂的,一旦你理解了他们是如何被构造的话,你就能解析或者构建任意的正则表达式了。 在JDK1.3以及之前的JDK版本中并没有包含正则表达式的类,如果要在JAVA中使用

小熊爱吃竹子的博客 1万+

java正整数正则表达式_Java 正则表达式

Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。下表列出了一些正则表达式的实例及描述:正...

weixin_35652131的博客 4883

java正则表达式使用

正则表达式 是什么: 正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串 干什么:正则主要用于 字符串中 为方便 字符串操作 ,很多地方不使用正则表达式也能达到目的,但是可能麻烦很多。 怎么用:在java中的标准使用如下: //编译正则表达式,这样子可以重用模式。 Pattern p = Pattern.compile("a*b"); // 用模式检查字符串 Matcher m...

dansam的专栏 1万+

java注解的正则表达_Java 正则表达式 解释说明

Java 正则表达式 解释说明更新时间:2009年06月11日 02:39:02 作者:java正则知识小结,一些常见的正则都包括在里面,推荐收藏。表达式意义:1.字符x 字符 x。例如a表示字符a\\ 反斜线字符。在书写时要写为\\\\。(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义字符,包括1.1的\\,而又带有...

weixin_39989159的博客 1358

【Java从入门到精通】Java 正则表达式

正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。Java 提供了 java.util.regex 包,它包含了 Pattern 和 Matcher 类,用于处理正则表达式的匹配操作。

RL2698853114的博客 1309
上一篇: java 23种常用设计模式之策略模式(Strategy)
下一篇: java 23种常用设计模式之解析器模式(Interpreter)
freedom1993
博客等级 码龄12年 25粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值