什么是正则表达式?
概念:维基百科上是这样定义的。
正则表达式(英语:Regular Expression、regex或regexp,缩写为RE),也译为正规表示法、常规表示法,
在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则表达式这个
概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
上面定义可以简化为:正则表达式是持有某个句法规则的单个字符串。
这样对正则表达式的认识就明朗了很多。
1. 它是字符串
2. 它持有句法规则
那什么是句法规则?
说白了,句法规则就是特殊符号,表达匹配意义的符号。如果你知道这些特殊符号都能匹配什么字符,你
就掌握了正则表达式!
我们先来看看一般字符是什么样子的:
x |
字符 x |
// |
反斜线字符 |
/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 的控制符
|
上面都是一般的字符,它们不要我们要研究的对象,它们没有特殊的匹配意义,它们只能匹配自己,例如:
正则表达式 |
匹配字符 |
t |
t |
/n |
/n |
//// |
// |
也许你看出来了,怎么最后一个例子不是自己匹配自己啊?是“////”匹配“//”。
这是因为 “//”在Java正则表达式中有特殊意义。在Java中(注意只是在Java中,在其它语言中并不是这样的)
“//”表示我要插入一个正则表达式反斜杠,紧跟其后的符号有特殊意义,要小心啊。比如:要匹配1-9的单数
字,我们要这样写“//d”,那既然“//”有特殊意义,我们就不能拿它来匹配它本身了,于是就只能用“////”来
匹配“//”这个反斜杠了。
下面表格是一些特殊符号,上面字符只能匹配自己,应该是模糊匹配吧,它们能匹配不只一个字符,在这里要抛
出一个关键词-字符类。
什么是字符类?
字符类有一个共同特点-用来匹配且只能匹配单个字符。它们不像数量词是为了说明或是限制字符的次数的,它
们就是为了匹配字符的,其中还有一些预定义字符类,它们是为了方便使用常用字符类而预定义的字符类。
功能 |
特殊符号 |
描述 |
|||||||||||||||
字符类(用于匹配单个字符) |
字符类 |
[] |
|
||||||||||||||
预定义字符类 |
. |
任何字符(与行结束符可能匹配也可能不匹配) |
|||||||||||||||
/d |
数字:[0-9] |
||||||||||||||||
/D |
非数字: [^0-9] |
||||||||||||||||
/s |
空白字符:[ /t/n/x0B/f/r] |
||||||||||||||||
/S |
非空白字符:[^/s] |
||||||||||||||||
/w |
单词字符:[a-zA-Z_0-9] |
||||||||||||||||
/W |
非单词字符:[^/w] |
||||||||||||||||
次数匹配(X表示单个字符或字符组) |
Greedy 数量词 |
X? |
X,一次或一次也没有 |
||||||||||||||
X* |
X,零次或多次 |
||||||||||||||||
X+ |
X,一次或多次 |
||||||||||||||||
X{n} |
X,恰好 n 次 |
||||||||||||||||
X{n,} |
X,至少 n 次 |
||||||||||||||||
X{n,m} |
X,至少 n 次,但是不超过 m 次 |
||||||||||||||||
Reluctant数量词 |
X?? |
X,一次或一次也没有 |
|||||||||||||||
X*? |
X,零次或多次 |
||||||||||||||||
X+? |
X,一次或多次 |
||||||||||||||||
X{n}? |
X,恰好 n 次 |
||||||||||||||||
X{n,}? |
X,至少 n 次 |
||||||||||||||||
X{n,m}? |
X,至少 n 次,但是不超过 m 次 |
||||||||||||||||
Possessiv数量词 |
X?+ |
X,一次或一次也没有 |
|||||||||||||||
X*+ |
X,零次或多次 |
||||||||||||||||
X++ |
X,一次或多次 |
||||||||||||||||
X{n}+ |
X,一次或多次 |
||||||||||||||||
X{n,}+ |
X,至少 n 次 |
||||||||||||||||
X{n,m}+ |
X,至少 n 次,但是不超过 m 次 |
||||||||||||||||
边界匹配 |
^ |
行的开头 |
|||||||||||||||
$ |
行的结尾 |
||||||||||||||||
/b |
单词边界 |
||||||||||||||||
/B |
非单词边界 |
||||||||||||||||
/A |
输入的开头 |
||||||||||||||||
/G |
上一个匹配的结尾 |
||||||||||||||||
/Z |
输入的结尾,仅用于最后的结束符(如果有的话) |
||||||||||||||||
/z |
输入的结尾 |
上面是用来匹配字符或是对字符的限制,那如何把它些字符串起来,行成一个字符序列,要用到逻辑运算符:
XY |
X后跟 Y |
X|Y |
X或 Y |
(X) |
X,作为捕获组 |
逻辑运算符中最后一项提到捕获组,那什么是捕获组?
有关组和捕获推荐一篇文章,很详细:
http://blog.csdn.net/lovingprince/archive/2008/08/06/2774819.aspx
相关推荐
为了帮助开发者更好地掌握Java正则表达式技术,我们提供了一系列的Java正则表达式技巧大全,包括《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧...
java正则表达式总结,java正则表达式入门的好材料
Java正则表达式是编程语言Java中用于处理字符串和文本的强大工具。它允许开发者通过模式匹配来执行复杂的文本分析和操作。在Java中,正则表达式的操作主要涉及两个核心类:`java.util.regex.Matcher`和`java.util....
Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于Perl风格的正则表达式,提供了灵活且强大的文本匹配和搜索功能。在Java中,正则表达式主要通过`java.util.regex`包来实现。这篇文档将对Java正则...
### Java正则表达式总结 #### 一、转义字符 在Java正则表达式中,转义字符用于表示特殊符号或预定义的字符类。这些字符通常具有特定的含义,可以直接用来匹配某些预定义的字符集或者特殊字符。 1. **普通转义序列...
### 使用Java正则表达式实现一个简单的身份证号码验证 #### 一、背景介绍 身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。...
总结来说,Java正则表达式在Android开发中扮演着不可或缺的角色,它提供了一种灵活的方式来处理和验证字符串数据。通过熟练掌握正则表达式,开发者能够提高应用程序的质量,确保用户输入的有效性,并优化文本处理...
### Java正则表达式匹配全角空格 在Java编程中,处理字符串是非常常见的需求之一。其中,使用正则表达式来对字符串进行拆分、替换等操作是一种非常高效的方法。本文将详细介绍如何使用Java中的`split()`方法,并...
Java 正则表达式过滤特殊字符的正则表达式 Java 正则表达式是 Java 语言中的一种强大的文本处理工具,能够对字符串进行复杂的匹配、提取和替换操作。本文将详细介绍 Java 正则表达式在过滤特殊字符方面的应用。 ...
包含的文件如`JAVA 正则表达式总结.edg`可能是文档的编辑文件,`文档截图1.jpg`、`文档截图2.jpg`提供了视觉辅助,`文档目录.jpg`帮助理解文档结构,`文档说明.txt`可能提供了文档的使用说明,而`ElecAssist_160201...
总结来说,Java正则表达式是一个强大的文本处理工具,通过组合各种元字符、量词、预定义字符类和边界,可以实现复杂的文本匹配和处理任务。熟练掌握正则表达式,能显著提升你在处理字符串问题时的效率和灵活性。
Java正则表达式是Java编程语言中用于处理字符串的强大工具,...通过阅读《Java 正则表达式的总结和一些小例子.pdf》和《Java正则表达式详解.pdf》,你将能够深入学习和实践更多正则表达式的用法,进一步提升编程技能。
### Java正则表达式详解 #### 一、正则表达式基础知识 正则表达式是一种强大的文本处理工具,被广泛应用于各种编程语言中,用于文本的查找与替换、验证等场景。Java作为一种主流的编程语言,同样支持正则表达式的...
### Java正则表达式判断字符串是否包含中文 在日常的软件开发过程中,我们经常会遇到需要对输入的字符串进行校验的情况。例如,在处理用户输入、文本分析或数据清洗时,可能需要判断一个字符串中是否包含中文字符。...
Java 正则表达式的总结和一些小例子 Java 正则表达式是 Java 编程语言中一个非常重要的组件,它可以用于文本显示、数据表示、查找键和许多其他目的。从 Java 1.4 开始,Java 核心 API 就引入了 java.util.regex ...
本资源文件是我自己总结的,其中包括5个类,这5个类的代码基本概括了java正则表达式替换String的多种情况,比如获取某个文件路径中盘符/后边的部分内容,提取"<title>XXXX</title>"中的文字XXXX,用正则表达式获取指定...
总结一下,Java中的Xeger和automaton(通常通过RE2J库)为我们提供了处理正则表达式的新方式。Xeger是一个方便的工具,可以直接根据正则表达式生成随机字符串,适合测试和调试。而automaton(有限状态自动机)则为...
根据提供的文件信息,本文将详细介绍Java正则表达式的概念、基本语法及应用场景,并结合Jakarta-ORO库来展示如何在Java中应用正则表达式。 ### 一、正则表达式简介 #### 1.1 什么是正则表达式? 正则表达式是一种...
### Java正则表达式知识点详解 #### 一、正则表达式基础概念 正则表达式(Regular Expression)是一种在字符串操作中具有强大功能的工具,它可以用来进行字符串的匹配、搜索、替换等操作。Java提供了`java.util....
### JAVA正则表达式实例教程知识点详述 #### 一、正则表达式的定义与特点 **1.1 正则表达式是什么?** - 正则表达式(Regular Expression)是一种模式匹配语言,用于文本搜索和替换。它提供了一种简洁而灵活的方式...