java - 通过正则表达式从字符串中获取带有斜杠的正确日期

标签 java regex

我有以下字符串volltext:

Los 3, PG 3, Lead-Analytiker Anforderungsanalyse / Konzept Servicezeit 1    1   532     7/1/17  10/31/17 

我正在尝试获取 10/31/17 行中的最后一个字符串。

使用我当前的代码,我得到7/1/17。保持对我来说很重要 KEYWORDMULTIMATCHPATTERNINFORMATIONSEXTRAKTORZEILENFUELLER 结构。我应该如何更改 INFORMATIONSEXTRAKTOR 正则表达式来获取 10/31/17 字符串?

这是我的代码:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang3.StringUtils;

public class ZuParser implements BedarfsanforderungParser {

    private static final String KEYWORD = "Los.*PG.*Servicezeit";
    private static final String MULTIMATCHPATTERN = "[\\t\\s]*\\d*[\\t\\s]*\\d*[\\t\\s]*\\d*[\\t\\s]*";
    private static final String INFORMATIONSEXTRAKTOR = "(\\d*[\\/]*\\d*[\\/]*\\d{1,2})";
    private static final String ZEILENFUELLER = "[\\t\\s]*.*";

    private static final Pattern ZUPATTERN = Pattern.compile("^" + KEYWORD + MULTIMATCHPATTERN + INFORMATIONSEXTRAKTOR + ZEILENFUELLER + "$", Pattern.MULTILINE);

    @Override
    public void parse(String volltext, Abruf abruf) {
      // volltext output --> "Los 3, PG 3, Lead-Analytiker Anforderungsanalyse / Konzept Servicezeit 1  1   532     7/1/17  10/31/17"
        fillZu(volltext, abruf);

    }   

    private void fillZu(String volltext, Abruf abruf) {
        String zuDatumstring = getZuDatumString(volltext);

    }


    private String getZuDatumString(String volltext) {  
        Matcher matcher = ZUPATTERN.matcher(volltext);
        if (matcher.find()) {
            String matchString = matcher.group(1);      
            return matchString;
        } else {
            return "";
        }
    }    
}

最佳答案

您需要添加表达式[\d\/]+\s+以跳过匹配组之前的第一个日期:

private static final String INFORMATIONSEXTRAKTOR = "[\d\/]+\s+(\\d*[\\/]*\\d*[\\/]*\\d{1,2})";

关于java - 通过正则表达式从字符串中获取带有斜杠的正确日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49884286/

相关文章:

java - 确定哪些 Spring @Value 注解注入(inject)失败

php - 如何编写正则表达式从这些 URL 中提取数字?

sql - 在数据库列中搜索数字,其中列包含由分隔符 '"&"在 SQLite 中分隔的一系列数字

ruby - 未返回 Ruby 正则表达式的匹配组

java - 在 GCViewer 的帮助下调整垃圾收集器

java - 为什么 IntelliJ Idea 不自动完成 Jersey 资源 @Consumes 或 @Produces 注释内的 MediaType 枚举?

java - Android 将 PCM 和 MP3 合并为 AAC

java - 有没有更简单的方法来取消引用 Java 中的可空引用?

python - 如何使用 Beautiful Soup 获取 CSS 链接

javascript - 如果字符存在于定界符的任一侧,则按定界符拆分字符串