专业语言:JAVA与正则表达式(下)

文章作者 100test 发表时间 2007:03:14 16:25:33
来源 100Test.Com百考试题网


§5替换(删除)、Matcher类
现在我们可能厌烦了true/false,我们看看替换。如把book,google替换成bak(这个文件后缀名,在EditPlus中还行)、look或goooogle。

程序4:字符串的替换。

import java.util.regex.*.

class Regex1{

public static void main(String args[]) {

String regEx="a ".//表示一个或多个a

String str="abbbaaa an banana hhaana".

Pattern p=Pattern.compile(regEx).

Matcher m=p.matcher(str).

String s=m.replaceAll("⊙⊙"). // ("") 删除

System.out.println(s).

}

}

这个程序与前面的程序的区别,在于使用了m.replaceAll(String)方法。看来Matcher类还有点用处。

① public final class Matcher是一个匹配器。可以把他看成一个人,一手拿着模子(Pattern类的对象),一手拿着一个字符序列(CharSequence),通过解释该模子而对字符序列进行匹配操作(match operations)。常常我们这样编程:“喂,模子p,你和字符串str一起创建一个匹配器对象”。即Matcher m=p.matcher(str).

② m可以进行一些操作,如public String replaceAll(String replacement),它以replacement替换所有匹配的字符串。

§6正则表达式之特殊字符
我们熟悉这样一个字符串"\n" 如:System.out.print(s "\nbbb").这是Java中常用的转移字符之一。其实转移字符就是一种正则表达式,它使用了特殊字符 \ 。

下面是正则表达式中常用的特殊字符:

匹配次数符号

*

{n}{n,}{n,m}

符号

| 程序2已经使用过了

句点符号

. 句点符号匹配所有字符(一个),包括空格、Tab字符甚至换行符。

方括号

[ ] 仅仅匹配方括号其中的字符)

圆括号

() 分组,圆括号中的字符视为一个整体。

连字符

- 表示一个范围。

符号

^ 表示不希望被匹配的字符(排除)

我们一下子学不了太多的东西,这不是正则表达式的全部内容和用法。但已经够我们忙活的了。我们用程序4 验证。(⊙⊙表示替换的字符)

① regEx为下列字符串时,能够表示什么?

regEx

匹配

测试用str

(a|b){2}

aaabbbba

aabbfooaabfooabfoob

a[abc]b

aababbacb

3dfacb5ooyfo6abbfooaab

.

all string

3dfac

a.

aaax……等等

3dfacgg

d[^j]a

daad9a等等,除dja

3dfacggdjad5a

[d-g][ac]c

daceccgac

3dfacggggccad5c

[d-g].{2}c

d⊙⊙c……

3dfacggggccad5c

g{1,10}

gggg……

3dfacggggccad5c

[a|c][^a]

3dfacggggccad5c



相关文章


专业语言:JAVA与正则表达式(上)
专业语言:JAVA与正则表达式(下)
专业语言:实现Java平台的三种方式
专业语言:Java类装载体系中的隔离性
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛