Reguläre Ausdrücke

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Zusammen,

bin leider noch ein Anfänger in Sachen "Reguläre Ausdrücke"
das Problem ist das selbe wie unter "String teilweise schützen" beschrieben.

hier noch mal für alle: Es ginge in Java oder JS...(daher auch String und nicht var) ^^

String telegram = ".????????????????.????.????.?????.---.?????.X------Y------Z------.R???C???L??S-.---.-----.X------Y------Z------.R???C???L??S-.0---0";

Alle TeilStrings die Rot Markiert sind sollen mit Hilfe eines Regulären Ausdrucks gefunden und ersetzt werden.

somit wäre das einfachste: 5 Muster zu erstellen

1 Muster = "????????????????" // 16 Fragezeichen
2 Muster = "?????" // 5 FZ
3 Muster = "????" // 4 FZ
4 Muster = "???" // 3 FZ
5 Muster = "??" // 2 FZ

somit hätte ich alle Teilstrings

Mein Problem ist:
wie suche ich nach einem "?", in google is leider nichts zu finden, da "?" ein SteuerSymbol der Regulären Ausdrücke ist bzw. ein SuchKriterium.

Wiki schreibt:
...Da dieses Verhalten jedoch nicht immer so gewollt ist, lassen sich bei manchen neueren RegEx-Implementierungen Quantoren als „genügsam“ bzw. engl. „non-greedy“ (also „nicht gierig“) deklarieren. Hierfür wird dem Quantor ein Fragezeichen ? nachgestellt.


ich denke das ist nicht so schwierig, wenn sich einer nen bisschen auskennt müsste das nen klax sein...

danke
 

hupfdule

Top Contributor
Du kannst jedes Steuerzeichen mit einem Backslahs "escapen".

Also z.B. "\?\?\?" für dein 4. Muster.

Du könntest, falls das für dich sinnvoll ist, aber auch alle auf einmal finden. Mit so einem Ausdruck:
Code:
"\?{2,16}"
Das findet alle Stellen, an denen mindestens 2 und maximal 16 Fragezeichen direkt nacheinander stehen.
 
G

Guest

Gast
mmhh danke, :roll:

ginge auch, dann kann ich gerade die Länge abfragen, und dann ersetzen!
aber mein Problem ist damit gelöst :)

danke! den rest teste ich dann mal aus, wenn fragen enstehen weiß ich ja wo ich suchen muss

PS: Ihr seid schneller als die im JS Forum :D
 

André Uhres

Top Contributor
Beispiel für 5 Fragezeichen:
Code:
       String str = ".????????????????.????.????.?????.---.?????.X------Y------" +
                "Z------.R???C???L??S-.---.-----.X------Y------Z------.R???C???L??S-.0---0";
        StringBuffer resultString = new StringBuffer();
        Pattern regex = Pattern.compile("(?<!\\?)\\?\\?\\?\\?\\?(?!\\?)");
        Matcher matcher = regex.matcher(str);
        while (matcher.find()) {
            matcher.appendReplacement(resultString, "xxxxx");
        }
        matcher.appendTail(resultString);
Oder mit dem regex von hupfdule:
Code:
       Pattern regex = Pattern.compile("\\?{2,16}");
        Matcher matcher = regex.matcher(str);
        int len = 0;
        while (matcher.find()) {
            len = matcher.end()-matcher.start();
            if(len==5){
                matcher.appendReplacement(resultString, "xxxxx");
            }
        }
        matcher.appendTail(resultString);
 
G

Gast

Gast
auch das wäre ne Möglichkeit, ich muss sagen ich bin begeistert über die schnellen und guten Antworten! danke euch beiden!
 

Dit

Bekanntes Mitglied
Hat Jemand noch gute Seiten wo man sich über Reguläre Ausdrücke informieren kann!
bin gerade dabei mir nen Regulären Ausdruck zu schreiben, wo ich Teil Strings versetzen kann

bekannst ist das bei dem Datum -- Deutsch -> USA

dd.mm.yyyy --> deutsch
yyyy-mm-dd --> USA

aber ohne jegliche Hilfe komm ich da nicht weit!
 

Dit

Bekanntes Mitglied
Hallo! ich bins noch mal!erst einmal großes dankeschön! hat alles geklappt!
nun bin ich an einem einem halb so schweren problem dran und bekomme es einfach nicht gelöst!

habe ein TextFeld und in dieses sollen auschließlich Zahlen von 1-5 eingeben werden (einstellig)

mein Regexp:

//var regexp = /[^06789]\d{1}/;
//var regexp = /^[06789]\d{1}/;
aber lösen beide nicht das Problem!

danke... ein hinweis könnte vielleicht schon genügen.. muss ja nicht immer die Lösung sein ^^ :)
 

Dit

Bekanntes Mitglied
Mir fällt gerade ein! das konntet ihr ja nicht wissen, mmhh Gast war auch ich :lol:

ich habe den Thread eröffnet und es ging eigentlich die ganze Zeit darum,
ein telegram so zu schützen, dass dem Benutzer ausschließlich die Möglichkeit bleibt,
die stellen die mit "?" gekennzeichnet waren zu ändern, ohne die anderen dabei zu verändern.
und genau das tut mein Script!

Es ist nicht die schönste Lösung aber sie funktioniert :wink:
und ich stehe ja noch am Anfang von JS und Regulären Ausdrücken!

Meine Lösung sollte keine Geheimnis sein sorry, wenn es so rüber gekommen ist! hier der wichtigste Teil:
vielleicht hier nicht ganz an der richtigen Stelle weil es Java Script ist! :?

Code:
//Eingabe des Benutzers wird eingelesen
	telegramAlt = new String(".????????????????.????.????.?????.---.?????.X------Y------Z------.R???C???L??S-.---.-----.X------Y------Z------.R???C???L??S-.0---0");
	telegramNeu = new String(document.getElementById("telegram").value);
	
	var teleAltLen = telegramAlt.length;
	var teleNeuLen = telegramNeu.length;

	else if (teleAltLen == teleNeuLen){
		//Prüft die Benutzereingabe ob noch "?" vorhanden sind
		pruef = telegramNeu.match(/\?/ig);
		//falls noch "?" vorhanden
		if(pruef){
			window.alert("Bitte alle Fragzeichen im Telegram ersetzen!");
			return false;
		}
		else {				
			//TeilStrings werden geschützt!Benutzer kann nur "?" ändern!
			var regexp = /.(\d{16}).(\d{4}).(\d{4}).(\d{5}).{5}(\w{5}).{24}(\d{3}).(\d{3}).(\d{2}).{36}(\d{3}).(\d{3}).(\d{2}).{8}/;		
			if (regexp.test(telegramNeu)){
				var ersetzen =  telegramNeu.replace(regexp, ".$1.$2.$3.$4.---.$5.X------Y------Z------.R$6C$7L$8.X------Y------Z------.R.$9C$10L$11S-.0---0");
				return true;
			}
			else{
				var g = window.confirm("Fehler im Telegram!");
				return false;
			}
		}
	}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
E Reguläre Ausdrücke: String-Ersetzung Allgemeine Java-Themen 0
G Reguläre Ausdrücke Allgemeine Java-Themen 11
G Reguläre Ausdrücke Allgemeine Java-Themen 2
S Reguläre Ausdrücke: Polynomterme Allgemeine Java-Themen 14
jstei001 Reguläre Ausdrücke bearbeiten/ändern Allgemeine Java-Themen 14
C reguläre Ausdrücke finden nicht was sie finden sollen Allgemeine Java-Themen 8
F Reguläre Ausdrücke und BBCode Allgemeine Java-Themen 10
J String für reguläre Ausdrücke escapen Allgemeine Java-Themen 2
C Reguläre Ausdrücke - X{0}?.* Allgemeine Java-Themen 8
C Reguläre Ausdrücke, String rückwärts durchsuchen Allgemeine Java-Themen 6
I Reguläre Ausdrücke und das "~" Symbol Allgemeine Java-Themen 2
B Reguläre ausdrücke mit variablen? Allgemeine Java-Themen 12
H Regex - Reguläre Ausdrücke Allgemeine Java-Themen 3
A Reguläre Ausdrücke vereinfachen Allgemeine Java-Themen 19
J Reguläre Ausdrücke Allgemeine Java-Themen 14
A Zufallswerte für reguläre Ausdrücke Allgemeine Java-Themen 15
R reguläre Ausdrücke Allgemeine Java-Themen 2
L Reguläre Ausdrücke und Fehlerbehandlung Allgemeine Java-Themen 10
RaoulDuke Reguläre Ausdrücke - Daten extrahieren Allgemeine Java-Themen 3
L reguläre Ausdrücke? Allgemeine Java-Themen 2
R Reguläre Ausdrücke (mehrzeilig) Allgemeine Java-Themen 2
C Reguläre Ausrücke Punkte im Satz richtig erkennen Allgemeine Java-Themen 6
E Reguläre Txt in Tree parsen Allgemeine Java-Themen 2
J Reguläre Ausrücke - Klammer nicht vorhanden Allgemeine Java-Themen 2
B kontextfreie grammatik / reguläre grammatik Allgemeine Java-Themen 2
P reguläre ausrücke und String.matches Allgemeine Java-Themen 4
S Reguläre Ausdruecke! Allgemeine Java-Themen 5
A Lambda-Ausdrücke Allgemeine Java-Themen 5
M Lambada Ausdrücke - wie funktionieren und benutzt man sie? Allgemeine Java-Themen 5
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
R Logische Ausdrücke in Java Allgemeine Java-Themen 4
Loyd Noch ne Regex-Frage: Verschachtelte Ausdrücke Allgemeine Java-Themen 4
H Geklammerte Ausdrücke nach Divide&Conquer Allgemeine Java-Themen 2
B Parser für logische Ausdrücke Allgemeine Java-Themen 9
J Expression Language für mathematische Ausdrücke Allgemeine Java-Themen 8
B Regeuläre Ausdrücke Allgemeine Java-Themen 8
G arithmetische ausdrücke Allgemeine Java-Themen 5
M Regular Expression - verschiedene Ausdrücke testen (grep | ) Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben