有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java解析字符串中的文件名

我试图找到一个简单的正则表达式,它以url开头,以jpg)结尾,以提取字符串url(file:///C:\\Testing\\external\\thex-2_rtfimage_1.jpg)

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class ExtractFile
{
     public static final String EXAMPLE_TEST = 
     "this is url(file:///C:\\Testing\\external\\thex-2_rtfimage_1.jpg) which is attached";

     public static void main(String[] args) {
        Pattern pattern = Pattern.compile("url");
        Matcher matcher = pattern.matcher(EXAMPLE_TEST);
        // check all occurance
        while (matcher.find()) {
           System.out.print("Start index: " + matcher.start());
           System.out.print(" End index: " + matcher.end() + " ");
           System.out.println(matcher.group());
        }
     }
}

共 (2) 个答案

  1. # 1 楼答案

    下面的模式应该可以检测以url开头,以jpg结尾的任何内容

    ((url)[\w\W\d\D]+(.jpg)+(\W){1}) // matches `url(` to start, anything in the middle that you will use for url names, followed by `.jpg`, and a bracket `)` 
    

    var text = "url(file:///C:\\Testing\\external\\thex-2_rtfimage_1.jpg)";
    var x = text.match(/((url)[\w\W\d\D]+(.jpg)+(\W){1})/g);
    alert(x);

    在我转到JSFIDLE解决方案时,演示使用了JavaScript。但该模式在Java中也可用

    针对您的模式的另一个解决方案可以是:

    \burl([\w\W])+(.jpg\))   
    

    它使用一个单词边界(\b)进行匹配,该边界以url开头,后跟一个或多个单词、非单词、数字或非数字字符的匹配,然后。以右括号结尾的jpg )。如果你能提供一份预期输入和答案的样本,那就更好了。但考虑到你的陈述,这就是我的想法。但很可能还有其他可行的解决方案

  2. # 2 楼答案

    您可以使用单词边界和.*?来匹配urljpg之间的文本:

    Pattern pattern = Pattern.compile("\\burl.*?jpg\\b");