2 Stimmen

Wie kann ich den Inhalt zwischen Datum mit Hilfe von Java-Regular Expressions erhalten?

Der folgende Code hat mir nicht den Inhalt zwischen den Daten geliefert. Kannst du mir bitte helfen.

String res="05/22/2014 03:22:39.288 ffff gggg kkkkkk lllllll ssss 05/22/2014 03:22:39.288 oooooo ppppp qqqq rrrrrr sss 05/22/2014 03:22:39.378 mmmmmm nnn oooo ";   

String regEx="((0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d).*([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].[\\d]*)(.*?)((0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d).*([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].[\\d]*)?";

Matcher matcher = Pattern.compile(regEx).matcher(res);

while(matcher.find())
{
  String group = matcher.group();
  System.out.println(group);
}

Sogar ich habe Folgendes versucht, indem ich `string split` mit regulärem Ausdruck in Java benutzt habe, aber es gibt nur ein Ergebnis:

String regEx="((0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d).*([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].([\\d][^\\s]+)?)";
        String[] split = res.split(regEx);

0voto

anubhava Punkte 713155

Sie können dieses Regex verwenden, um Ihren Text zu erfassen:

(?<=\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}\.\d{3} )(.*?)(?=(?: \d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}\.\d{3}|$))

Und Ihren Text in Gruppe #1 abrufen, d.h.

matcher.group(1);

Arbeitsdemo

0voto

daft_wader Punkte 61

Der Grund, warum Sie nur ein Ergebnis im Split erhalten, liegt darin, dass der * Operator in einem Regex gierig ist. Lesen Sie das hier durch, es ist interessant: http://www.regular-expressions.info/repeat.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X