java 正则表达式 提取字符串
来源:互联网 发布:淘宝首页装修雪花代码 编辑:程序博客网 时间:2024/04/29 20:06
- Java code
- public static void main(String[] args) { String source = "first {test} is here,two {test2} is here!"; String find = "\\u007B.*\\u007D"; Pattern pattern = Pattern.compile(find); Matcher matcher = pattern.matcher(source); while(matcher.find()) { System.out.println(matcher.group()); }}
我要实现的是将{test}和{test2}提取出来。但是用
- Java code
- String find = "\\u007B.*\\u007D";
获取出来的是
{test} is here,two {test2}
貌似获取的是第一个{和最后一个}。我怎么能用正则去提取每一对{}的呢?
因为这个字符串的内容不是固定的。所以无法使用类似下面的方式解决:
- Java code
- String input = "first {test} is here,two {test2} is here!"; Scanner scanner = new Scanner (input); scanner.findInLine ("first (.+) is here,two (.+) is here!"); MatchResult result = scanner.match();
- huntor
- (逸飞)
- 等 级:
- Java code
- (\\{^\\}+\\})
- zhaolinger2
- (询问者)
- 等 级:
"\\u007B.*?\\u007D";
- zhaolinger2
- (询问者)
- 等 级:
普及一下“非贪婪匹配”的知识。
一般情况下我们做的都是贪婪匹配,即能匹配到的最长的字符串。也就是你现在遇到的问题,把第一个左括号和第二个右括号中的大段匹配出来。
而这个时候需要用到非贪婪匹配,也就是,从左到右匹配,只要遇到符合要求的字符串,无论它是否是最长的,都把它拿出来当做匹配结果。
使用方法是在表示多个匹配的通配符,如*,+,{m,n}之后加上一个问号?,就能实现了。
一般情况下我们做的都是贪婪匹配,即能匹配到的最长的字符串。也就是你现在遇到的问题,把第一个左括号和第二个右括号中的大段匹配出来。
而这个时候需要用到非贪婪匹配,也就是,从左到右匹配,只要遇到符合要求的字符串,无论它是否是最长的,都把它拿出来当做匹配结果。
使用方法是在表示多个匹配的通配符,如*,+,{m,n}之后加上一个问号?,就能实现了。
- huntor
- (逸飞)
- 等 级:
- Java code
- String find = "\\{.*?\\}";
- java 正则表达式 提取字符串
- 正则表达式提取字符串
- 正则表达式实例代码,java正则提取字符串
- 正则表达式用于字符串提取
- java中正则表达式提取字符串中日期实现代码
- java正则表达式提取字符串中的中文信息
- Java通过正则表达式提取数字串或者字符串
- Java 使用正则表达式提取字符串制定的字符
- Java正则表达式非贪婪提取字符串中的每个数字
- Java正则表达式提取字符
- java正则表达式提取URL
- Java使用正则提取字符串
- ASP 正则表达式匹配字符串提取
- 正则表达式提取字符串中的数字
- js正则表达式提取字符串中的数字
- 使用正则表达式提取字符串中的内容
- 提取字符串中的url网址 正则表达式
- 【正则表达式】从字符串中提取数字
- 【游戏通关】解题报告
- C回调函数的简单实例
- window2008 php伪静态 iis7
- 宝宝大事记
- 【XEN学习笔记】XEN 4.1.0 PVOPS设置和启动中遇到的一些问题
- java 正则表达式 提取字符串
- http://poj.org/problem?id=2983
- 简单js代码
- servfox分析
- 手机浏览器HTML5时代悄然而至
- 设计模式-观察者模式
- 我的开发(二)时空操作系统项目设想
- javascript验证码:
- 一道JAVA面试题