锁定老帖子 主题:Java中正则表达式的使用
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|||
---|---|---|---|
作者 | 正文 | ||
发表时间:2008-12-25
最后修改:2009-03-10
在Java中,我们为了查找某个给定字符串中是否有需要查找的某个字符或者子字串、或者对字符串进行分割、或者对字符串一些字符进行替换/删除,一般会通过if-else、for 的配合使用来实现这些功能 。如下所示:
public class Test{ public static void main(String args[]) { String str="@Shang Hai Hong Qiao Fei Ji Chang"; boolean rs = false; for(int i=0;i<str.length();i++){ char z=str.charAt(i); if('a' == z || 'F' == z) { rs = true; break; }else{ rs= false; } } System.out.println(rs); } } 这种方法使用简单直观,但是 难以解决复杂的工作,而且代码量也会增加很多,不利于维护。
这时,我们可以使用正则表达式来实现这些功能,而且代码简单易维护。下面就来介绍了Java中对字符串的正则表达式的几个常用的功能,具体情况如下所示(其中用到了java.util.regex包):
1.Java中在某个字符串中查询某个字符或者某个子字串 String s = "@Shang Hai Hong Qiao Fei Ji Chang"; String regEx = "a|F"; //表示a或F Pattern pat = Pattern.compile(regEx); Matcher mat = pat.matcher(s); boolean rs = mat.find(); 如果s中有regEx,那么rs为true,否则为flase。 如果想在查找时忽略大小写,则可以写成Pattern pat=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
2.在某个文件中获取一段字符串 String regEx = ".+\(.+)$"; String s = "c:\test.txt"; Pattern pat = Pattern.compile(regEx); Matcher mat = pat.matcher(s); boolean rs = mat.find(); for(int i=1;i<=mat.groupCount();i++){ System.out.println(mat.group(i)); } 以上的执行结果为test.txt,提取的字符串储存在mat.group(i)中,其中i最大值为mat.groupCount();
3.对字符串的分割 String regEx=":"; Pattern pat = Pattern.compile(regEx); String[] rs = pat.split("aa:bb:cc"); 执行后,r就是{"aa","bb","cc"} 如果用正则表达式分割就如上所示,一般我们都会使用下面更简单的方法: String s = "aa:bb:cc"; String[] rs=s.split(":");
4.字符串的替换/删除 String regEx="@+"; //表示一个或多个@ Pattern pat=Pattern.compile(regEx); Matcher mat=pat.matcher("@@aa@b cc@@"); String s=mat.replaceAll("#"); 结果为"##aa#b cc##" String s=mat.replaceAll(""); 结果为"aab cc"
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|||
返回顶楼 | |||
发表时间:2008-12-29
最后修改:2008-12-29
java.util.regex包对正则表达式的支持有点弱了,建议用Jakarta oro
|
|||
返回顶楼 | |||
发表时间:2008-12-29
跟那个log系统一样, 被阉割的工具。
|
|||
返回顶楼 | |||
发表时间:2008-12-29
donnki 写道 java.util.regex包对正则表达式的支持有点弱了,建议用Jakarta oro 是的,这里只是java.util.regex来举例说明,然后就把java.util.regex包下的Pattern类顺便简单的说明了一下。 |
|||
返回顶楼 | |||
发表时间:2008-12-29
最后修改:2008-12-30
Regexp的实现是用的java标准库的java.util.regex. 但是发现有的地方不兼容。
有时候会有一些正规表达式在java.util.regex中无法通过. |
|||
返回顶楼 | |||
浏览 140747 次