正则表达式提取String子串
来源:互联网 发布:网络直拨电话 编辑:程序博客网 时间:2024/06/04 19:09
最近遇到了一个字符串处理的功能,忽然发现了正则表达式的强大,深深的被她的迷人魅力所吸引,以前只是听说,今天亲眼所见,亲身经历,真的彻底折服。
言归正传:java中String类里面封装了很多字符串处理的方法,替换、查找、包含等,但是我今天遇到了一个功能竟然没有封装,就是查找出字符串内所有匹配正则表达式的字符串数组,(源字符串“2012-08-12 水电费 2012-12 abcde 2012-08-23”,正则表达式:“\\d{4}[ /-]{1}\\d{2}([ /-]{1}\\d{2})?”,我所需要的就是{“2012-08-12”,“2012-12”,“2012-08-23”}),这该怎么实现呢?
为了实现我的目的,我也煞费周折啊。认真研究了Pattern和Matcher两个类,幸好是,要不然我也就体会不到这种柳暗花明的感觉了,也感受不到正则的魅力了。其实String自身携带的方法已够应付绝大多数的应用了,Pattern中的方法基本在String中都有体现,即单独使用Pattern的时候相对就少了一点,Matcher也就使用了find() 和group()就可以实现我上面提出的功能了。
下面是整个字符串通过正则表达式进行拆分后(包含拆分符,String.split()返回的不包含正则表达式的值,要不然我也不用费那么大劲了)的数组:
言归正传:java中String类里面封装了很多字符串处理的方法,替换、查找、包含等,但是我今天遇到了一个功能竟然没有封装,就是查找出字符串内所有匹配正则表达式的字符串数组,(源字符串“2012-08-12 水电费 2012-12 abcde 2012-08-23”,正则表达式:“\\d{4}[ /-]{1}\\d{2}([ /-]{1}\\d{2})?”,我所需要的就是{“2012-08-12”,“2012-12”,“2012-08-23”}),这该怎么实现呢?
为了实现我的目的,我也煞费周折啊。认真研究了Pattern和Matcher两个类,幸好是,要不然我也就体会不到这种柳暗花明的感觉了,也感受不到正则的魅力了。其实String自身携带的方法已够应付绝大多数的应用了,Pattern中的方法基本在String中都有体现,即单独使用Pattern的时候相对就少了一点,Matcher也就使用了find() 和group()就可以实现我上面提出的功能了。
具体实现:
String str="2012-08-12 2012-12 abcde 2012-08-23 ";String regex = "\\d{4}[ /-]{1}\\d{2}([ /-]{1}\\d{2})?"; //正则表达式Pattern pattern = Pattern.compile(regex); Matcher m = pattern.matcher(str);List<String> matchRegexList = new ArrayList<String>();while(m.find()){matchRegexList.add(m.group());}
下面是整个字符串通过正则表达式进行拆分后(包含拆分符,String.split()返回的不包含正则表达式的值,要不然我也不用费那么大劲了)的数组:
String str="2012-08-12 2012-12 abcde 2012-08-23 ";String regex = "\\d{4}[ /-]{1}\\d{2}([ /-]{1}\\d{2})?"; //正则表达式Pattern pattern = Pattern.compile(regex); Matcher m = pattern.matcher(str);List<String> matchRegexList = new ArrayList<String>();while(m.find()){matchRegexList.add(m.group());}System.out.println(m.groupCount());String[] result = pattern.split(str); //使用正则表达式,分割字符串List<String> allSplitList = new ArrayList<String>();int len = matchRegexList.size() > result.length ? matchRegexList.size():result.length;for(int i=0; i<len; i++){if(i<result.length){allSplitList.add(result[i]);}if(i<matchRegexList.size()){allSplitList.add(matchRegexList.get(i));}}for (int i = 0; i < allSplitList.size(); i++) { //获取源字符串中匹配正则表达的字符串System.out.println("-"+allSplitList.get(i)+"-");}
- 正则表达式提取String子串
- javascript正则表达式提取子匹配项
- sscanf正则表达式与string快速提取key=value
- 正则表达式返回子串
- url正则表达式提取
- 正则表达式提取数字
- 正则表达式提取字符串
- 正则表达式提取电话号码
- 正则表达式提取电话号码
- jmeter--正则表达式提取
- Jmeter正则表达式提取
- 正则表达式提取时间
- Jmeter正则表达式提取
- 正则表达式提取指定内容
- 利用正则表达式,提取天气预报。
- 提取扩展名的正则表达式
- 超链接提取的正则表达式
- 提取 URL 的正则表达式
- SMTP(Simple Mail Transfer Protocol, 简单邮件传输协议)简介
- ZOJ 3123 Subsequence (动态规划)
- http测试小工具
- 复杂linux命令组合使用快捷方法
- hdu 2074
- 正则表达式提取String子串
- Java 程序员在写 SQL 程序时候常犯的 10 个错误
- elasticsearch-servicewrapper
- PENetwork(WinPE环境网络设置软件)
- IOS 中使用线程方式调用服务
- 提取词库程序
- svn中的一个技巧
- centos664位版本lamp配置第一步:安装配置mysql5.6.x
- HANA学习资料,视频教程!