Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2829324
  • 博文数量: 221
  • 博客积分: 10045
  • 博客等级: 上将
  • 技术积分: 2252
  • 用 户 组: 普通用户
  • 注册时间: 2005-01-25 20:28
文章分类

全部博文(221)

文章存档

2012年(1)

2008年(4)

2007年(11)

2006年(26)

2005年(179)

我的朋友

分类: Java

2005-11-13 10:16:59

Java表达式

如果你曾Perl或任何其他内建正表达式支持的言,你一定知道用正表达式理文本和匹配模式是多么简单。如果你不熟悉术语,那“正表达式”(Regular Expression)就是一个字符构成的串,它定了一个用来搜索匹配字符串的模式。 

言,包括PerlPHPPythonJavaScriptJScript,都支持用正表达式理文本,一些文本编辑器用正表达式实现“搜索-”功能。那Java又怎呢?本文写作,一个包含了用正表达式行文本理的Java范需求(Specification Request)已得到可,你可以期待JDK的下一版本中看到它。 

然而,如果在就需要使用正表达式,又么办呢?你可以从Apache.org源代码开放的Jakarta-ORO。本文接下来的内容先要地介表达式的入,然后以Jakarta-ORO API例介如何使用正表达式。

一、正表达式基 

先从简单始。假你要搜索一个包含字符“cat”的字符串,搜索用的正表达式就是“cat”。如果搜索大小写不敏感,单词catalog”、“Catherine”、“sophisticated”都可以匹配。也就是 

 

1.1 句点符号 

你在玩英文拼字游,想要找出三个字母的单词,而且单词以“t”字母开头,以“n”字母束。另外,假有一本英文字典,你可以用正表达式搜索它的全部内容。要构造出个正表达式,你可以使用一个通配符——句点符号“.”这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”匹配“t#n”、“tpn”甚至“t n”有其他多无意合。是因句点符号匹配所有字符,包括空格、Tab字符甚至行符: 

 

1.2 方括号符号 

了解决句点符号匹配范围过于广泛问题,你可以在方括号(“[]”)里面指定看来有意的字符。此,只有方括号里面指定的字符才参与匹配。也就是,正表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因在方括号之内你只能匹配个字符: 

 

1.3 “或”符号 

如果除了上面匹配的所有单词之外,你想要匹配“toon”,那,你可以使用“|”操作符。“|”操作符的基本意就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”表达式。里不能使用方号,因方括号只允匹配个字符;里必使用括号“()”括号可以用来分,具体后面介 

 

1.4 表示匹配次数的符号 

表一示了表示匹配次数的符号,些符号用来确定符号左的符号出的次数: 

 

 

要在文本文件中搜索美国的社会安全号个号的格式是999-99-9999。用来匹配它的正表达式如一所示。在正表达式中,字符(“-”)有着特殊的意,它表示一个范,比如从09。因此,匹配社会安全号中的字符号,它的前面要加上一个转义字符“ 

 

 

一:匹配所有123-12-1234形式的社会安全号

 

设进行搜索的候,你希望字符号可以出,也可以不出——即,999-99-9999999999999都属于正确的格式。这时,你可以在字符号后面加上“?”数量限定符号,如二所示: 

 

 

二:匹配所有123-12-1234123121234形式的社会安全号

 

下面我再来看另外一个例子。美国汽牌照的一格式是四个数字加上二个字母。它的正表达式前面是数字部分“[0-9]{4}”,再加上字母部分“[A-Z]{2}”示了完整的正表达式。 

 

 

三:匹配典型的美国汽牌照号,如8836KV

 

1.5 “否”符号 

^”符号称“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。例如,四的正表达式匹配所有单词,但以“X”字母开头单词除外。 

 

 

四:匹配所有单词,但“X”

阅读(1842) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~