Regulärer Ausdruck

Status
Nicht offen für weitere Antworten.

Iron Monkey

Bekanntes Mitglied
Moin, moin!

Dieser regulären Ausdruck "(?<!\S)\d{1,}(?!\S)" soll im Text "1234 RECHN-NR.: 01234567 123456789 4.2008" mit replace("") alle Zahlen ausser 4.2008 löschen. Das Ergebnis soll so stehen: "RECHN-NR.: 4.2008"!

Mein Problem ist aber, wenn im Text "1234 RECHN-NR.:01234567 123456789 4.2008" zwischen "NR.:" und "01" kein Leerzeichen steht, dann wird die Zahl "01234567" nicht mitgelöscht, weil diese Zahl zu dem Text "RECHN-NR.:" gehört. Die möchte ich aber trotzdem mitlöschen.

Wie kann ich den o.g. Ausdruck noch näher verfeinern, so dass ich im Text ohne Leerzeichen immer alle Zahlen ausser "4.2008" löschen kann?

Danke für jeden Tipp!

Gruß
Iron Monkey
 
Zuletzt bearbeitet:

sparrow

Top Contributor
In so einem Fall würde ich nicht mit einem regulärem Ausdruck arbeiten, sondern:

Alle Zeichen zwischen NR.: und der ersten Leerzeichen vor einem Punkt löschen.
 

Iron Monkey

Bekanntes Mitglied
Ja, aber ich muss mit dem regulären Ausdruck arbeiten!

Stell Dir vor, jeder Kunde schreibt beim Überweisen irgendeinen Text in das Verwendungszweck rein, d.h. wir müssen dafür sorgen, alles möglich zu treffen! Der Text sieht alles unterschiedlich aus!

Der Text kann auch so aussehen: "1234 01234567RECHN-NR.: 123456789 4.2008" oder "4.2008 1234 01234567RECHN-NR.: 123456789", usw.!

Gruß
Iron Monkey
 

Verjigorm

Top Contributor
Arbeite halt mit 2 oder Patterns ...
Ich hab hier auch ne Kundennummereingabe, die 6 verschiedene Versionen abdecken muss, das geht halt nur mit 2-3 Patterns
 

Iron Monkey

Bekanntes Mitglied
Aha, ok! Und wie schlägst du mit 2-3 Pattern in meinem Fall vor?

Meinst du vielleicht, ich soll z.B. zuerst alle 6-15 stelligen Zahlen mit replace löschen und dann dieses Ergebnis mit dem nächsten Pattern weitersuchen, usw.? Wenn ja, dann klar, das könnte auch eine Lösung zu meinem Problem sein!

Ich probiers mal gleich mal! :)

Gruß
Iron Monkey
 

fjord

Bekanntes Mitglied
Ich würds genau andersrum machen. Statt das du versuchst alles zu matchen was du nicht haben willst, match doch einfach das woran du interessiert bist.

Nur mal schnell zusammengefrickelt:
Java:
import java.util.regex.*;

public class RechNr {
	private static final Pattern P = Pattern.compile("(?<!\\d)((?:0?[1-9]|1[0-2])\\.20\\d\\d)(?!\\d)");
	private static final Matcher M = P.matcher("");
	
	private static final String[] RECHNUNGEN = new String[]{
		"1234 RECHN-NR.: 01234567 123456789 4.2008",
		"1234 RECHN-NR.: 01234567 123456789 13.2008",
		"1234 01234567RECHN-NR.: 123456789 4.2008",
		"4.2008 1234 01234567RECHN-NR.: 123456789"
	};
	
	public static void main(String[] args) {
		for (String r : RECHNUNGEN) {
			System.out.print(r + " -> ");
			M.reset(r);
			if (M.find()) {
				System.out.println("RECHN-NR.: " + M.group(1));
			} else {
				System.out.println("negative");
			}
		}	
	}
}
führt zu:
Code:
1234 RECHN-NR.: 01234567 123456789 4.2008 -> RECHN-NR.: 4.2008
1234 RECHN-NR.: 01234567 123456789 13.2008 -> negative
1234 01234567RECHN-NR.: 123456789 4.2008 -> RECHN-NR.: 4.2008
4.2008 1234 01234567RECHN-NR.: 123456789 -> RECHN-NR.: 4.2008
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
W Regulärer Ausdruck für 0 oder mehr Blanks Allgemeine Java-Themen 8
M Regulärer Ausdruck Allgemeine Java-Themen 3
R Regulärer Ausdruck Allgemeine Java-Themen 5
G Regulärer Ausdruck für 2 Wörter Allgemeine Java-Themen 3
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
H Problem mit der Klasse Pattern - Regulärer Ausdruck Allgemeine Java-Themen 2
S Regulärer Ausdruck tut überhaupt nichts Allgemeine Java-Themen 2
M Regulärer Ausdruck Allgemeine Java-Themen 6
Iron Monkey Regulärer Ausdruck Allgemeine Java-Themen 2
T Regulärer Ausdruck Allgemeine Java-Themen 6
S Regulärer Ausdruck für HTML-Tag Allgemeine Java-Themen 18
P [Regulärer Ausdruck] Auf Gruppe mit Quantifier separat zugreifen? Allgemeine Java-Themen 2
J Regulärer Ausdruck - Der Punkt und der Zeilenumbruch Allgemeine Java-Themen 6
A Regulärer Ausdruck für die Uhrzeit Allgemeine Java-Themen 3
G Regulärer Ausdruck Allgemeine Java-Themen 4
M Regulärer Ausdruck Allgemeine Java-Themen 3
P Regulärer Ausdruck um sich wiederholende Zeichen zu finden. Allgemeine Java-Themen 9
M Regulärer Ausdruck mit [ und ] Allgemeine Java-Themen 9
P Problem - Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 5
J Regulärer Ausdruck Allgemeine Java-Themen 3
N Regulärer Ausdruck Allgemeine Java-Themen 2
M Regulärer Ausdruck Allgemeine Java-Themen 2
B regulärer ausdruck Allgemeine Java-Themen 9
T Einfacher regulärer Ausdruck Allgemeine Java-Themen 2
A Regulärer Ausdruck EMail-Prüfung Allgemeine Java-Themen 3
N Regulärer Ausdruck Allgemeine Java-Themen 2
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
G JavaFX var Ausdruck Allgemeine Java-Themen 1
S Hex Ausdruck kürzen Allgemeine Java-Themen 34
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
L Erste Schritte Ausdruck schöner schreiben? Allgemeine Java-Themen 8
J Frage zu regulärem Ausdruck Allgemeine Java-Themen 2
H Reg Exp Ausdruck erweitern Allgemeine Java-Themen 2
A Bestimmte Sonderzeichen im Regulären Ausdruck Allgemeine Java-Themen 2
B Problem mit Regulärem Ausdruck Allgemeine Java-Themen 4
J RegEx Ausdruck Allgemeine Java-Themen 2
G RegEx- Ausdruck Allgemeine Java-Themen 4
L String Replace mit Regulärem Ausdruck Allgemeine Java-Themen 2
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
T Ausdruck mit pdfBox macht Probleme Allgemeine Java-Themen 2
M Ausgabe in Datei zum Ausdruck Allgemeine Java-Themen 2
F Problem mit regulären Ausdruck in Zusammenhang mit HTML Allgemeine Java-Themen 8
X String zerlegen mittels regulärem Ausdruck Allgemeine Java-Themen 31
M Wertepaar in relulärem Ausdruck Allgemeine Java-Themen 15
A Regulären Ausdruck für Funktionsnamen Allgemeine Java-Themen 4
M Regulären Ausdruck negieren Allgemeine Java-Themen 6
G Frage zu Regulärem Ausdruck Allgemeine Java-Themen 2
S regex-Pattern Ausdruck negieren Allgemeine Java-Themen 2
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
I Composite Pattern für Ausgabe von Ausdruck Allgemeine Java-Themen 3
X problem mit regulären ausdruck Allgemeine Java-Themen 3
F Problem mit regulärem Ausdruck Allgemeine Java-Themen 6
M backreference im regulären ausdruck Allgemeine Java-Themen 9
A Probleme Umwandlung Ausdruck String in double Allgemeine Java-Themen 4
P Dateinamen mit regulärem Ausdruck testen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben