如果查询
J2SE 1.4
之后的
String
在线
API
手册说明,会发现有
matches()
、
replaceAll()
等方法,所传入的自变量是正则表达式
(Regular Expression)
的字符串。正则表达式最早是由数学家
Stephen Kleene
于
1956
年提出,主要使用在字符字符串的格式比对,后来在信息领域广为应用,现在已经成为
ISO(
国际标准组织
)
的标准之一。
Java
在
J2SE 1.4
之后开始支持正则表达式,您可以在
API
文件的
java.util.regex.Pattern
类中找到支持的正则表达式相关信息,可以将正则表达式应用于字符串的比对、取代、分离等动作上。以下将介绍几个简单的正则表达式。
对于一些简单的字符比对,例如
1
~
9
、
A
~
Z
等,您可以使用预先定义的符号来表示。表
6-4
列出了几个常用的字符比对符号。
表
6-4
字符比对符号
方 法
|
说 明
|
.
|
符合任一字符
|
\d
|
符合
0
~
9
任一个数字字符
|
\D
|
符合
0
~
9
以外的字符
|
\s
|
符合
\t
、
\n
、
\x0B
、
\f
、
\r
等空格符
|
\w
|
符合
a
~
z
、
A
~
Z
、
0
~
9
等字符,也就是数字或是字母都符合
|
\W
|
符合
a
~
z
、
A
~
Z
、
0
~
9
等之外的字符,也就是除数字与字母外都符合
|
举例来说,如果有一字符串
abcdebcadxbc
,若使用
.bc
来作比对,符合的子字符串有
abc
、
ebc
、
xbc 3
个;如果使用
..cd
,则符合的子字符串只有
abcd
。范例
6.9
证实了这个说明。
Ü
范例
6.9
RegularExpressionDemo.java
public class RegularExpressionDemo {
public static void main(String[] args) {
String text = "abcdebcadxbc";
String[] tokens = text.split(".bc");
for(String token : tokens) {
System.out.print(token + " ");
}
System.out.println();
tokens = text.split("..cd");
for(String token : tokens) {
System.out.print(token + " ");
}
System.out.println();
}
执行结果:
使用
.bc
来作比对,由于符合的子字符串有
abc
、
ebc
、
xbc 3
个,所以
split()
方法会使用这
3
个字符串为依据来作字符串分离,返回的自然就是不符合表达式
.bc
的
d
与
ad
。同理如果表达式为
..cd
,则使用
split()
返回的就是不符合
..cd
的
ebcadxbc
。
也可以使用字符类
(Character Class)
来比较一组字符范围。表
6-5
示范了几个字符类的设定方式。
表
6-5
字符类范例
范 例
|
作 用
|
[abc]
|
符合
a
、
b
或
c
|
[^abc]
|
符合
a
或
b
或
c
之外的字符
|
[a-zA-Z]
|
符合
a
~
z
或者是
A
~
Z
的字符
|
[a-d[m-p]]
|
a
~
d
或者是
m
~
p
,也可以写成
[a-dm-p]
|
[a-z&&[def]]
|
a
~
z
并且是
d
或
e
或
f
,结果就是
d
或
e
或
f
可以符合
|
[a-z&&[^bc]]
|
a
~
z
并且不是
b
或
c
|
[a-z&&[^m-p]]
|
a
~
z
并且不是
m
~
p
|
指定一个字符之外,也可以加上“贪婪量词”
(Greedy Quantifiers)
来指定字符可能出现的次数。表
6-6
示范了几个例子。
表
6-6
贪婪量词范例
范 例
|
作 用
|
X?
|
X
可出现一次或完全没有
|
X*
|
X
可出现零次或多次
|
X+
|
X
可出现一次或多次
|
X{n}
|
X
可出现
n
次
|
X{n,}
|
X
可出现至少
n
次
|
X{n, m}
|
X
可出现至少
n
次,但不超过
m
次
|
另外,还有
Reluctant quantifiers
、
Possessive quantifiers
等的指定,可以自行参考
java.util.regex.Pattern
类
API
文件中的说明。
在
String
类中,
matches()
方法可以让您验证字符串是否符合指定的正则表达式,这通常用于验证使用者输入的字符串数据是否正确,例如电话号码格式;
replaceAll()
方法可以将符合正则表达式的子字符串置换为指定的字符串;
split()
方法可以让您依指定的正则表达式,将符合的子字符串排除,剩下的子字符串分离出来并以字符串数组返回。范例
6.9
已经示范了
split()
方法的使用,接下来在范例
6.10
中示范
replaceAll()
与
matches()
方法的运用。
Ü
范例
6.10 UseRegularExpression.java
import java.io.*;
public class UseRegularExpression {
public static void main(String args[])
throws IOException {
BufferedReader reader =
new BufferedReader(
new InputStreamReader(System.in));
System.out.println("abcdefgabcabc".replaceAll(".bc", "###"));
String phoneEL = "[0-9]{4}-[0-9]{6}";
String urlEL = "<a.+href*=*['\"]?.*?['\"]?.*?>";
String emailEL = "^[_a-z0-9-]+(.[_a-z0-9-]+)*" +
"@[a-z0-9-]+([.][a-z0-9-]+)*$";
System.out.print("
输入手机号码
: ");
String input = reader.readLine();
if(input.matches(phoneEL))
System.out.println("
格式正确
");
else
System.out.println("
格式错误
");
System.out.print("
输入
href
标签
: ");
input = reader.readLine();
//
验证
href
标签
if(input.matches(urlEL))
System.out.println("
格式正确
");
else
System.out.println("
格式错误
");
System.out.print("
输入电子邮件
: ");
input = reader.readLine();
//
验证电子邮件格式
if(input.matches(emailEL))
System.out.println("
格式正确
");
else
System.out.println("
格式错误
");
}
执行结果:
###defg######
输入手机号码
: 0939-100391
格式正确
输入
href
标签
: <a href="http://caterpillar.onlyfun.net">
格式正确
输入电子邮件
: caterpillar.onlyfun@gmail.com
格式正确
分享到:
相关推荐
本文实例源码 博文链接:https://gmf.iteye.com/blog/89077
Java Regular Expression Compiler(JREC)是一个专为处理正则表达式设计的开源框架。它提供了一种机制,允许开发者根据正则表达式的常规语法构造有限状态自动机(Finite State Automata,FSA)。这种自动机在处理...
在计算机科学领域,正则表达式是进行模式匹配的重要手段之一。通过正则表达式,用户可以定义一系列规则,用于在文本数据中查找符合特定模式的数据。 #### 二、正则表达式的基础概念 正则表达式由两种类型的字符...
正则表达式(Regular Expression,简称regex)是Java编程语言中的一个重要工具,用于处理字符串模式匹配和搜索替换。在Java中,正则表达式通过java.util.regex包中的类和接口来实现,例如Pattern和Matcher。本篇文章...
正则表达式(Regular Expression)通常被简称为regex或regexp,是一组用于描述字符串模式的语言。在Java中,`java.util.regex`包提供了支持正则表达式的类库,主要包括`Pattern`、`Matcher`和`...
介绍正则表达式的英文slide 使用Python和Java实现相应的功能 文件已加密,可在下载后与我联系,免费获得解锁密码
正则表达式(Regular Expression),简称为regex,是计算机科学中用于处理字符串的强大工具。它通过一种模式匹配的方式来搜索、替换或提取文本,广泛应用于文本编辑器、编程语言、搜索引擎以及各种数据处理任务中。...
正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。在Java开发中,掌握正则表达式能极大提高处理字符串的效率和精确度。本教程以实例为...
在Java中,虽然正则表达式的原生支持是在JDK的后续版本引入的,但可以通过Apache的Jakarta-ORO库来提前使用正则表达式功能。下面我们将深入探讨正则表达式的一些基本概念和常用符号。 1. **句点符号**(`.`):句点...
正则表达式(Regular Expression),简称正则,是编程领域中一种强大的文本处理工具,用于高效地进行字符串的查找、替换、分割等操作。它通过一套特定的语法,可以匹配符合特定模式的字符串,广泛应用于数据验证、...
《Regular Expression》手册是一本专注于正则表达式的轻量级指南,特别适用于JavaScript开发者以及使用Java进行字符串操作的程序员。它详细阐述了正则表达式的语法、构造以及在实际应用中的用法,帮助开发者快速理解...
8. Regular Expression Matching in Java 正则表达式匹配是一个字符串问题,要求使用正则表达式来匹配字符串。可以使用Java的Pattern和Matcher类来解决该问题。 9. Merge Intervals 区间合并是一个数组问题,要求...
我使用hylang进行正则表达式,但这并不意味着javascript / java / python中的regx不好(它们已经足够好了!),并且我不想替换它们。 这只是为了显示lisp函数编程的便利性。 好了,现在我实现了一个使用hy(python...
在Java编程语言中,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于模式匹配、查找、替换和提取字符串等操作。在Java中,正则表达式是通过`java.util.regex`包提供的类来实现的,主要...
正则表达式(Regular Expression,简称regex)是用于在文本中匹配特定模式的强大工具,广泛应用于数据验证、搜索与替换、文本分析等多个领域。在IT行业中,熟练掌握正则表达式能够极大地提升处理字符串问题的效率。...
在IT行业中,正则表达式(Regular Expression)是一种强大的文本处理工具,广泛应用于字符串匹配、查找、替换等操作。在Java编程中,正则表达式是通过`java.util.regex`包来实现的,它提供了丰富的API供开发者进行...