有 Java 编程相关的问题?

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

java正则表达式帮助字符串JWE766。1.pdf格式摘录766

我想要一些正则表达式方面的帮助

我有一些这样的文件:

  • JWE-766.1。pdf
  • JWE-766.2。pdf
  • JWE-768.1。pdf
  • JWE-770.1。pdf

我想要一个正则表达式模式来提取'JWE-'之后的数字。i、 e.766

此外,还需要一个正则表达式来从JWE-766.1中提取1和2。pdf和JWE-766.2。pdf格式

任何帮助都将不胜感激

谢谢大家


共 (4) 个答案

  1. # 1 楼答案

    JWE-(\d+)。(\d+)。pdf

    我们应该做到这一点

    当然,在创建字符串时:

    Pattern  p = Pattern.compile("JWE-(\\d+)\.(\\d+)\\.pdf");
    Matcher m = p.matcher(s); // s contains your filename
    if (m.matches()) { 
       String fullName = m.group(0);
       int firstIndex = m.group(1); // 766
       int secondIndex = m.group(2); // 1
    }
    

    玩得开心

  2. # 2 楼答案

    您可以使用括号捕获组,然后使用Matcher。组(int)以在匹配后检索它们

    尝试模式“^JWE-(\d+)”(\d?)。我认为第一组应该是766,第二组应该是1

    但是,如上所述,如果文件名的长度一致,则通过索引直接操作将更快

    。。。慢了一分钟。精灵之王敏捷如风

  3. # 3 楼答案

    Pattern p = Pattern.compile("^JWE-([0-9]+)\\.([0-9]+)\\.pdf$");
    Matcher m = p.matcher("your string here");
    
    if (m.find()) {
        System.out.println(m.group(1)); //first number group
        System.out.println(m.group(2)); //second number group
    }
    

    摘自here

    另外,如果要循环一系列字符串,请确保重用Pattern p对象

  4. # 4 楼答案

    除非模式有更多的变化,否则在本例中,我将只使用子字符串操作

    string s = "JWE-766.1.pdf";
    string firstNumber = s.substring( s.indexOf("-" +1), s.indexOf(".") );
    string secondNumber = "JWE-766.1.pdf".substring( s.indexOf("." +1), s.lastIndexOf(".") );