在java中使用正则表达式
2006-09-09 14:44
507 查看
正则表达式(regular
expression)一个又经典又实用又陌生的东西。说他经典因为"正则表达式"在1956年就有了,说他实用是因为各种语言里都有它的身影,说他陌生是因为使用的人不很多。
[align=left] [/align]
今天遇到了,不妨就了解一下吧。反正有益无害,绝对是绿色产品。
正则表达式主要应用于文本的处理,如检索,替换,检查错误,文字拆分...实在是一言难尽,如果要全部写出来,一本书都不差不多。还好oreilly已经为我们出了一本了。
[align=left] [/align]
讲具体内容以前先给个完整的例子,这样能有个感性的认识。
[align=left]import java.util.regex.*;[/align]
[align=left]public class Regex{[/align]
public
static void main(String[] args){
String text = "my email address is [email]xhinker@163.com[/email]";
Pattern pattern = Pattern.compile("\\w+@\\w+.\\w+");
Matcher matcher = pattern.matcher(text);
if(matcher.find()){
System.out.println(matcher.group());
}
[align=left] [/align]
[align=left] }[/align]
[align=left]}[/align]
把这段程序用jdk或jcreator或水腻的便了。反正运行起来就是了
[align=left]输出结果:xhinker@163.com[/align]
当你看完下面的东西回头再看看这段程序就会发现,这不过是小菜一碟
[align=left] [/align]
[align=left]字符和字符类[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]常用符号:[/align]
[align=left]\d:[0-9][/align]
[align=left]\D:[^0-9][/align]
[align=left]\w:[a-zA-Z0-9][/align]
[align=left]\W:[^a-zA-Z0-9][/align]
[align=left] [/align]
[align=left]{?i):大小写无关[/align]
[align=left] [/align]
[align=left]\b和\B分别表示词边界和非词边界[/align]
当然上面这些只不过是最常用的,写出几个正则表达式是没有问题了。接下来说说java。
在java里\有其自身的意义,所以在用\s,\d的时候要加上一个\也就是\\s
、\\d \\(等
java自1.4后开始支持正则表达式,东西都放在java.util.regex包里,用Pattern生成一个模式对象,然后用matcher进行匹
配。如果要输出匹配结果的话,一定要记得写上matcher.find();否则会出错。当然也可以用替换,这就要看你的喜好拉。想看更多的例子就去
jdk帮助文档。
[align=left] [/align]
想了解更多或者掌握正则表达式的话,google去吧,那里是知识的海洋。
expression)一个又经典又实用又陌生的东西。说他经典因为"正则表达式"在1956年就有了,说他实用是因为各种语言里都有它的身影,说他陌生是因为使用的人不很多。
[align=left] [/align]
今天遇到了,不妨就了解一下吧。反正有益无害,绝对是绿色产品。
正则表达式主要应用于文本的处理,如检索,替换,检查错误,文字拆分...实在是一言难尽,如果要全部写出来,一本书都不差不多。还好oreilly已经为我们出了一本了。
[align=left] [/align]
讲具体内容以前先给个完整的例子,这样能有个感性的认识。
[align=left]import java.util.regex.*;[/align]
[align=left]public class Regex{[/align]
public
static void main(String[] args){
String text = "my email address is [email]xhinker@163.com[/email]";
Pattern pattern = Pattern.compile("\\w+@\\w+.\\w+");
Matcher matcher = pattern.matcher(text);
if(matcher.find()){
System.out.println(matcher.group());
}
[align=left] [/align]
[align=left] }[/align]
[align=left]}[/align]
把这段程序用jdk或jcreator或水腻的便了。反正运行起来就是了
[align=left]输出结果:xhinker@163.com[/align]
当你看完下面的东西回头再看看这段程序就会发现,这不过是小菜一碟
[align=left] [/align]
[align=left]字符和字符类[/align]
表格 A: 字符匹配 | |||
操作 | 解释 | 例子 | 结果 |
. | 单个字符匹配 | .ord | 匹配 “ford”, “lord”, “2ord”, |
[ ] | 多个字符列表 | [cng] | 只会匹配 “cord”, “nord”, 和 “gord” |
[^ ] | 不出现字符列表 | [^cn] | 匹配 “lord”, “2ord”, 等. 但不会匹配 “cord” or “nord” |
[a-zA-Z] | 匹配 “aord”, “bord”, “Aord”, “Bord”等 | ||
[^0-9] | 匹配 “Aord”, “aord”, 等. 但不会匹配“2ord”, 等. |
表格 B: 重复操作符 | |||
操作 | 解释 | 例子 | 结果 |
? | 匹配0次或1次 | “?erd” | 匹配 “berd”, “herd”“erd”等 |
* | 匹配0次以上 | “n*rd” | 匹配 “nerd”, “nrd”, “neard”, 等. |
+ | 匹配1次以上 | “ +erd” | 匹配 “nerd”, “nnerd”, 等., 但不匹配 “erd” |
{n} | 匹配n次 | “[a-z]{2}erd” | 匹配“cherd”, “blerd”, 等. 但不匹配 “nerd”, “erd”, “buzzerd”, 等. |
{n,} | 匹配n次以上 | “.{2,}erd” | 匹配 “cherd” and “buzzerd”, but not “nerd” |
{n,N} | 匹配n-N次 | “n[e]{1,2}rd” | 匹配 “nerd” and “neerd”等 |
[align=left]常用符号:[/align]
[align=left]\d:[0-9][/align]
[align=left]\D:[^0-9][/align]
[align=left]\w:[a-zA-Z0-9][/align]
[align=left]\W:[^a-zA-Z0-9][/align]
[align=left] [/align]
[align=left]{?i):大小写无关[/align]
[align=left] [/align]
[align=left]\b和\B分别表示词边界和非词边界[/align]
当然上面这些只不过是最常用的,写出几个正则表达式是没有问题了。接下来说说java。
在java里\有其自身的意义,所以在用\s,\d的时候要加上一个\也就是\\s
、\\d \\(等
java自1.4后开始支持正则表达式,东西都放在java.util.regex包里,用Pattern生成一个模式对象,然后用matcher进行匹
配。如果要输出匹配结果的话,一定要记得写上matcher.find();否则会出错。当然也可以用替换,这就要看你的喜好拉。想看更多的例子就去
jdk帮助文档。
[align=left] [/align]
想了解更多或者掌握正则表达式的话,google去吧,那里是知识的海洋。
相关文章推荐
- java 正则表达式和properties文件修改基本使用
- Java中正则表达式的使用
- 使用java正则表达式过滤HTML ,获取<body>标签中的内容解决思路
- 使用Java正则表达式提取字符串中的数字一例
- Java正则表达式使用 | 叠加
- Java简单爬虫系列(3)---正则表达式和Java正则API的使用
- java 如何用pattern 和 Matcher 来使用正则表达式
- java正则表达式的使用与模板
- Java中正则表达式使用方法详解
- Java基础之一组有用的类——使用正则表达式查找和替换(SearchAndReplace)
- Java中正则表达式的使用
- 深入java 使用正则表达式
- JAVA基础学习之IP简述使用、反射、正则表达式操作、网络爬虫、可变参数、了解和入门注解的应用、使用Eclipse的Debug功能(7)
- java中正则表达式的使用
- [改善Java代码]推荐在复杂字符串操作中使用正则表达式
- 使用Java正则表达式匹配IP
- Java正则表达式的使用
- Java中使用正则表达式简化编程
- java使用正则表达式匹配HTML标签
- Java正则表达式匹配使用实例