java 正则 如何提取

渔泯小镇 发布于 2013/08/06 20:09
阅读 1K+
收藏 1
 


public static void main(String[] args) {
  String a = "abc{{人教版小学数学五下_1.2题库/14KS15.jpg}}ac{{bb24KS15.png}}23";
  Pattern pattern = Pattern.compile("[{{].+[}}]");
  Matcher matcher = pattern.matcher(a);
  while(matcher.find()) {
    String val = matcher.group();
    System.out.println(val);
  }
}


提取出来:{{人教版小学数学五下_1.2题库/14KS15.jpg}}ac{{bb24KS15.png}}

期望的结果:

{{人教版小学数学五下_1.2题库/14KS15.jpg}}

{{bb24KS15.png}}


请问各位这个正则要怎么写呢!

加载中
0
渔泯小镇
渔泯小镇

引用来自“黄亿华”的答案

引用来自“渔泯小镇”的答案

引用来自“渔泯小镇”的答案

引用来自“黄亿华”的答案

.+改成.+? 非贪婪匹配即可
感谢各位的回答,运行了你们的代码,这条即可解决问题! 谢谢了。

仔细看了下,得到的结果是

{{人教版小学数学五下_1.2题库/14KS15.jpg}
{{bb24KS15.png}

最右少了一个大括号!

看漏了[],你用 @上海白痴 那条,是正确的 

[]的用法不对,{}也是正则保留字,建议看一下正则表达式入门...

恩啊 谢谢了,很久没弄这个东西 全都忘记完了。

现在完全解决了。

public static void main(String[] args) {
    String a = "abc{{人教版小学数学五下_1.2题库/14KS15.jpg}}ac{{bb24KS15.png}}23";
    Pattern pattern = Pattern.compile("\\{\\{(.+?)\\}\\}");
    Matcher matcher = pattern.matcher(a);
    while(matcher.find()) {
      String val = matcher.group();
      // 获取图片名字
      String imgName = matcher.group(1);
      System.out.println(val + " : " + imgName);	
    }
}


===========打印结果========================================
{{人教版小学数学五下_1.2题库/14KS15.jpg}} : 人教版小学数学五下_1.2题库/14KS15.jpg
{{bb24KS15.png}} : bb24KS15.png

0
ReliefZkk
ReliefZkk
String a = "abc{{人教版小学数学五下_1.2题库/14KS15.jpg}}ac{{bb24KS15.png}}23";
		Pattern pattern = Pattern.compile("(\\{.+\\})[a-z]+(\\{.+\\})");//(\\{\\{*\\}\\})
		Matcher matcher = pattern.matcher(a);
		
		while (matcher.find()) {
			String group1 = matcher.group(1);
			String group2 = matcher.group(2);
			
			System.out.println(group1);
			System.out.println(group2);
		}
0
徐迎龙
徐迎龙
\\{\\{[^\\{\\}]*\\}\\}
0
黄亿华
黄亿华
.+改成.+? 非贪婪匹配即可
0
agateriver
agateriver
String ResultString1 = null;

String ResultString2 = null; 

String subjectString = "abc{{人教版小学数学五下_1.2题库/14KS15.jpg}}ac{{bb24KS15.png}}23";

try {
    Pattern regex = Pattern.compile("(\\{\\{.*?\\}\\}).*(\\{\\{.*?\\}\\})");
    Matcher regexMatcher = regex.matcher(subjectString);
     if (regexMatcher.find()) {

        ResultString1 = regexMatcher.group(1);
        ResultString2 = regexMatcher.group(2);
    
} catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
}


0
渔泯小镇
渔泯小镇

引用来自“黄亿华”的答案

.+改成.+? 非贪婪匹配即可
感谢各位的回答,运行了你们的代码,这条即可解决问题! 谢谢了。
0
渔泯小镇
渔泯小镇

引用来自“渔泯小镇”的答案

引用来自“黄亿华”的答案

.+改成.+? 非贪婪匹配即可
感谢各位的回答,运行了你们的代码,这条即可解决问题! 谢谢了。

仔细看了下,得到的结果是

{{人教版小学数学五下_1.2题库/14KS15.jpg}
{{bb24KS15.png}

最右少了一个大括号!

0
黄亿华
黄亿华

引用来自“渔泯小镇”的答案

引用来自“渔泯小镇”的答案

引用来自“黄亿华”的答案

.+改成.+? 非贪婪匹配即可
感谢各位的回答,运行了你们的代码,这条即可解决问题! 谢谢了。

仔细看了下,得到的结果是

{{人教版小学数学五下_1.2题库/14KS15.jpg}
{{bb24KS15.png}

最右少了一个大括号!

看漏了[],你用 @上海白痴 那条,是正确的 

[]的用法不对,{}也是正则保留字,建议看一下正则表达式入门...

返回顶部
顶部