java 正则util_java 正则达式 java.util.regex

在java.util.regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。另加一个新的例外类,PatternSyntaxException,当遇到不合法的搜索模式时,会抛出例外。

Pattern :

用来表示一个经过编译处理后的正则表达式。通俗一点来说,就是用一个类来表示一个正则表达式,这个类是从正则表达式构造得到的。这个类并没有public

constructor, 如果想得到一个这个类的一个对象则必须调用该类的public static方法:public static

Pattern compile(String regex)或者 public static Pattern

compile(String regex,int flags)。这两个方法返回一个Pattern型的对象。

Matcher :

解释Pattern并执行匹配、查找工作的类,跟Pattern类一样,这个类也没有定义public

constructor,要想获得一个Matcher对象必须调用Pattern类的方法 public Matcher

matcher(CharSequence input) 来得到。

PatternSyntaxException :

一个unchecked exception。当遇到不符和Java正则表达式的语法的时候程序就会抛出这个异常。

下面的一段代码实现的功能是,从一个文本文件逐行读入,并逐行搜索电话号码数字,一旦找到所匹配的,然后输出在控制台。

BufferedReader in;

Pattern pattern =

Pattern.compile("\\(\\d{3}\\)\\s\\d{3}-\\d{4}");

in = new BufferedReader(new FileReader("phone"));

String s;

while ((s = in.readLine()) != null)

{

Matcher matcher = pattern.matcher(s);

if (matcher.find())

{

System.out.println(matcher.group());

}

}

in.close();

find()方法,用来搜索与正则表达式相匹配的任何目标字符串,group()方法,用来返回包含了所匹配文本的字符串。

正则表达式结构简介:

字符:

x 字符 x

\\ 反斜杠

\0n 十进制数 (0 <= n <= 7)

\0nn 十进制数 0nn

(0 <= n <= 7)

\0mnn 十进制数 0mnn (0

<= m <= 3, 0 <= n

<= 7)

\xhh 十六进制数

0xhh

\uhhhh 十六进制数 0xhhhh

\t 制表符 ('\u0009')

\n 换行符 ('\u000A')

\r 回车符 ('\u000D')

\f The form-feed character ('\u000C')

\a The alert (bell) character ('\u0007')

\e esc符号 ('\u001B')

\cx x 对应的控制符

字符类

[abc] a, b, 或 c (简单字符串)

[^abc] 除了 a, b, 或 c 之外的任意字符(否定)

[a-zA-Z] 从a 到

z 或 从A 到 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](子集)

预定义字符序列

. 任意字符 (也可能不包括行结束符)

\d 数字: [0-9]

\D 非数字: [^0-9]

\s 空字符: [ \t\n\x0B\f\r]

\S 非空字符: [^\s]

\w 单字字符: [a-zA-Z_0-9]

\W 非单字字符: [^\w]

POSIX 字符类 (US-ASCII only)

\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}]

\p{Blank} 空格或制表符: [ \t]

\p{Cntrl} 控制字符:

[\x00-\x1F\x7F]

\p{XDigit} 十六进制数: [0-9a-fA-F]

\p{Space} 空字符: [

\t\n\x0B\f\r]

Unicode 字符类

\p{InGreek} 希腊语种的字符 (simple block)

\p{Lu} 大写字母 (simple category)

\p{Sc} 货币符号

\P{InGreek} 除希腊语种字符外的任意字符 (negation)

[\p{L}&&[^\p{Lu}]] 除大写字母外的任意字符 (subtraction)

边界匹配器

^ 一行的开始

$ 一行的结束

\b 单词边界

\B 非单词边界

\A 输入的开始

\G 当前匹配的结束

\Z The end of the input but for the final

terminator, if any

\z 输入的结束

Greedy quantifiers

贪婪匹配量词(Greedy quantifiers )(不知道翻译的对不对)

X? X不出现或出现一次

X* X不出现或出现多次

X+ X至少出现一次

X{n} X出现n次

X{n,} X至少出现n次

X{n,m} X至少出现n次,但不会超过m次

Reluctant quantifiers

X?? X, 不出现或出现一次

X*? X, 不出现或出现多次

X+? X, 至少出现一次

X{n}? X, 出现n次

X{n,}? X, 至少出现n次 X{n,m}? X, 至少出现n次,但不会超过m次

Possessive quantifiers

X?+ X, 不出现或出现一次

X*+ X, 不出现或出现多次

X++ X, 至少出现一次

X{n}+ X, 出现n次

X{n,}+ X, 至少出现n次 X{n,m}+ X, 至少出现n次,但不会超过m次

逻辑运算符

XY Y跟在X后面

X|Y X 或 Y

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值