我有以下字符串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
。保持对我来说很重要
KEYWORD
、MULTIMATCHPATTERN
、INFORMATIONSEXTRAKTOR
、ZEILENFUELLER
结构。我应该如何更改 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/