RegEx _ und 0-9

127.0.0.1

Bekanntes Mitglied
Hi Leute,

nur ne kurze Frage:

Will prüfen ob ein String einen unterstrich und dann dannach eine beliebige Zahl enthält
Mach ich mit RegEx, is klar ^^

Java:
if(line.contains("_[0-9]")){

System.out.println("Gefunden !");

}

Meine Frage:

Wie muss ich die RegEx für java quoten ??
Code:
_[0-9]

mfg
 
G

Gast2

Gast
Nein, musst du nicht escapen. contains erwartet nur keinen Regex :)

Dafür musst du nen Matcher verwenden.
 

127.0.0.1

Bekanntes Mitglied
aber
Java:
if(line.matches("_[0-9]")){
}

gibt mir einen boolean Wert zurück -.-
Will ja nen String ^^
 

faetzminator

Gesperrter Benutzer
Willst du nun wissen, ob das vorkommt, oder was vorkommt?
Verwende einfach einen Matcher, welcher mit [c]find()[/c] die jeweiligen Vorkommnisse findet, falls nötig.
 

timbeau

Gesperrter Benutzer
Was willst du für nen String? Eine Methode die containswrapped und bei contains = true ein "Gefunden" zurückgibt?

Manchmal hat man Denkblockaden, sowas ist doch kein Problem für dich ;)

Java:
private String wrapContains(String toCheck){
		if(toCheck.matches("_[0-9]+")){
			return "Gefunden!";
		}
		else return "Moep";
	}
 

127.0.0.1

Bekanntes Mitglied
jo, Denkblockade glaub ich ^^

Hab den Code:
Java:
if(line.matches("_[0-9]"))
{
							
System.out.println("Gefunden !");
}

aber da findet er nix -.-
 
G

Gast2

Gast
Ich dachte du willst prüfen ob in deinem String _ oder 0-9 vorkommt?
String#matches prüft ob der String dem Regex entspricht, machs mit nem Matcher und find().
 

timbeau

Gesperrter Benutzer
Naja, das der Regex noch etwas umgebaut werden müsste ist ja klar.

Bei langen String lohnt sich der Matcher bestimmt eher als ein Regex .*?_[0-9]+.*
 

faetzminator

Gesperrter Benutzer
Wenn der String selbst nur [c]_[0-9][/c] enthalten soll, dann verwende [c]matches("_[0-9]")[/c], ansonsten [c]matches(".*_[0-9].*")[/c]. Alternative wär [c]Pattern.compile("_[0-9]").matcher(input).find()[/c].
 

timbeau

Gesperrter Benutzer
Nein hast du nicht gemacht, du willst wissen ob der String _[0-9] enthält und nicht ob der ausschließlich daraus besteht, sonst könnte man ja auch equals nehmen.
 

127.0.0.1

Bekanntes Mitglied
ja, das will ich doch auch, verwirrt mich doch nicht so ???:L

Will wissen ob mein String auf "_0-9" endet
also so:

XXXXXXXX_2
oder
YYYYYYY_4
 

faetzminator

Gesperrter Benutzer
Dann sag uns das doch gleich? Oder setz dich selbst ein Bisschen mit Regex auseinander ;) Zuerst sagtest du "enthält", jetzt "endet"... Wie wärs mit [c]matches(".*_[0-9]")[/c]?
 

timbeau

Gesperrter Benutzer
Faetz sagt dir schon zum 3. Mal den Regex.

Code:
"_[0-9]+
ist ungleich
Code:
".*?_[0-9]+.*"
 

127.0.0.1

Bekanntes Mitglied
Ich sag euch aber auch schon zum 2ten mal das es nicht geht ;)

Hab folgenden Code stehen:
Java:
if(line.matches(".*_[0-9]"))
{
System.out.println("Gefunden");

}

Aber in der Konsole steht nix....
und der String ist definitiv vorhanden !

Wenn ich schreibe:
Java:
if(line.contains("_1"))
{
System.out.println("Gefunden");

}
dann gehts

In dem File sieht der Text wie folgt aus:
Code:
966800_1
 

faetzminator

Gesperrter Benutzer
Na dann tritt das "_1" aber nicht am Schluss des Strings auf. Denn [c]"adfgafg_1".matches(".*_[0-9]")[/c] -> [c]true[/c] ;)

Edit: da wirst du sicherlich noch Leerzeichen o.ä. im File haben. Verwende auf jeder Linie zuerst [c]trim()[/c].
 

faetzminator

Gesperrter Benutzer
Wenn du ein Mal alle Posts gelesen hättest, dann wüsstest du dass
1. [c]matches(".*_[0-9]")[/c] funktioniert
2. [c]contains("_1")[/c] nicht auf das Ende schaut
3. Du im File irgendwo einen Space o.ä. haben musst
4. Dieses Problem mit trim() lösen könntest
 

127.0.0.1

Bekanntes Mitglied
hmmm....
1. und 2. hab ich probiert, da muss irgendwo im Code ein anderer Fehler sein, ich such mal
3. Hab ich nicht, schon geschaut, lediglich Trennzeichen in Form eines Doppelpunktes also
Code:
Bla:966800_1:BlaBla
 
G

Gast2

Gast
Wenn hinter dem _1 noch was kommt, dann matcht die Regex
Code:
.*_[0-9]
natürlich nicht.
Poste doch einfach mal was für nen String du jetzt wirklich hast (der scheint sicht von Post zu Post ja weiterzuentwickeln) und auf was du den konkret prüfen willst. Das wirds einigen leichter machen dir zu helfen.
 

127.0.0.1

Bekanntes Mitglied
Wenn hinter dem _1 noch was kommt,
Nee, kommt nix mehr

Poste doch einfach mal was für nen String du jetzt wirklich hast (der scheint sicht von Post zu Post ja weiterzuentwickeln) und auf was du den konkret prüfen willst.

Der String sieht wiefolgt aus:
Code:
XXVA234:hierirgendwas:ppqs778-8:Bla:Bla:966800_1:BlaBla:V3
--> ich splitte ihn aber auf, Trennzeichen ist ":"

dementsprechend müsste es an dem "966800_1" doch nichts auszusetzen geben oder ?!
 

timbeau

Gesperrter Benutzer
Sorry aber sowas von Tipresistent wie du war hier noch keiner.

Java:
@Test
	public void regex(){
		String splitted = "966800_1";
		System.out.println(splitted.matches(".*?_[0-9]+"));
	}

liefert true. Einfach mal richtig kopieren.
 

faetzminator

Gesperrter Benutzer
Ernsthaft, so darüber zu diskutieren macht überhaupt keinen Sinn. 127.0.0.1, wenn du so überzeugt von dir und anscheinend nicht an unsere Inputs glaubst, warum werden wir überhaupt gefragt?
Entweder kannst du dir den Debugger anschmeissen, oder du gibst jeden zu prüfenden String aus. Und nicht mit [c]System.out.println(foo);[/c], sondern mit [c]System.out.println("\"" + foo + "\"");[/c], damit man zumindest Leerzeichen schon mal erkennt. Kannst das gerne auch hier ins Forum posten.
Und bitte beachte stets: bring uns im Anfangspost möglichst vielen, sinnvollen Input, dann ist das Thema auch nach 2 Antworten geschlossen. Zudem können wir dir präzisere Antworten und mehr Hintergrund liefern.
 

127.0.0.1

Bekanntes Mitglied
@timbeau: dass das true zurückgibt hab ich auch bemerkt ^^ wollte damit auch weiterarbeiten, ging aber irgendwie auch nicht

@faetzminator: ich glaub an eure Antworten, deshalb wende ich mich ja auch an euch......aber der Code den ich ausprobiert hab geht nicht........hab immerwieder die Überprüfung gemacht ob er den String überhaupt findet, das ist der Fall, also stimmt was mit der RegEx nicht, schätze ich

Hab am Anfgang nicht allzuviel Input gebracht weil ich dachte es liegt an der RegEx, oder an der if Prüfung

Trotzdem danke an alle,
habs mehr oder weniger gelöst, leider nicht elegand xD
Funktioniert alles, nur diese blöde abfrage auf "_[0-9]" noch nicht



Gruß
 

timbeau

Gesperrter Benutzer
"Ging irgendwie nicht" ist keine Fehlermeldung...

und den Code den du ausporbierst solltest du vielleicht nächstes mal zeigen wenn du Hilfe benötigst.

Ich bin raus :autsch:
 

127.0.0.1

Bekanntes Mitglied
"Ging irgendwie nicht" ist keine Fehlermeldung...

kommt keine Fehlermeldung, sondern einfach nix
Der String ist vorhanden, er läuft aber nicht in die if Abfrage rein

Ich hab da ja ein Syso stehen, aber das gibt er mir (wenn ich RegEx benutze) nicht aus, nur wenn ich direkt nach "_1" suche
 

127.0.0.1

Bekanntes Mitglied
Java:
if(line.contains("_1"))
{
System.out.println("Gefunden");
String p[] = line.split(":");
line=set_colum(11, new StringBuffer(line), ":", p[11].substring(0, 6)).toString();
}

--> So funktionierts definitiv
 

diggaa1984

Top Contributor
poste doch mal wies nicht geht, mit regEx

außerdem ist es ein Unterschied für den Aufbau des RegEx ob du vor oder nach der Abfrage splittest!
 

127.0.0.1

Bekanntes Mitglied
Wenn der String selbst nur [c]_[0-9][/c] enthalten soll, dann verwende [c]matches("_[0-9]")[/c], ansonsten [c]matches(".*_[0-9].*")[/c]. Alternative wär [c]Pattern.compile("_[0-9]").matcher(input).find()[/c].

das geht nicht ^^

In meinem Code:
Java:
if(line.matches("_[0-9]"))
{                          
System.out.println("Gefunden");
}
Da passiert gar nix, keine Ausgabe in der Konsole, nix

Java:
if(line.matches(".*_[0-9].*"))
{                          
System.out.println("Gefunden");
}
das geht auch nicht
 

timbeau

Gesperrter Benutzer
Und so funktionierts auch definitiv

Java:
@Test
	public void regex(){
		String line = "966800_2";
		if(line.matches(".*?_[0-9]+.*"))
		{
		System.out.println("Gefunden");
		}
	}

Dein Problem ist nicht der Regex und die Line sieht garantiert nicht so aus wie gepostet
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
Java:
public class Test {
	
	public static void main(String[] args) {
		String s = "XXVA234:hierirgendwas:ppqs778-8:Bla:Bla:966800_1:BlaBla:V3";
		if (s.matches(".*_[0-9].*")) // oder auch mit ".*_[0-9]+.*"
			System.out.println("gefunden");
	}
}
 

faetzminator

Gesperrter Benutzer
Klar, denn bei [c]"XXVA234:hierirgendwas:ppqs778-8:Bla:Bla:966800_1:BlaBla:V3"[/c] ist _1 eindeutig nicht am Ende der Linie :) Aber natürlich am Ende eines Teiles, welches mit : getrennt wird. Also muss der Regex statt [c]".*_[0-9]"[/c] einfach [c]".*_[0-9]:.*"[/c] lauten. Falls aber der _[0-9] auch ganz am Ende - als letztes Item - gematcht werden muss, kann man den Regex immer noch leicht erweitern: [c]".*_[0-9]:).*)?"[/c].
 

127.0.0.1

Bekanntes Mitglied
oh man......endlich !

Java:
if(line.matches(".*_[0-9]:.*"))
{
System.out.println("Gefunden");
}

Es geht !
Dankeschön an alle und an faetzminator für den RegEx Befehl (den ich von Anfang an gesucht hatte)

Gruß
 

nazar

Mitglied
Wenn die Regex geht, dann hat deine zerlegte line nicht das von dir beschriebene Format (966800_1).
Schreib vor dem
Java:
 if(line.matches())
noch ein
Java:
 System.out.println(line)
und überprüf nochmal ob du wirklich richtig zerlegt hast. Nicht dass sich dadurch noch weitere Fehler im Programm einschleichen.
Zur weiteren Regexhilfe mal Java Regex Tutorial.
 
Zuletzt bearbeitet:

nazar

Mitglied
So wie es aussieht, hast du noch nicht genug gelernt oder ich bin mal wieder begriffsstutzig.
Da du ständig die Position vertreten hast, dass der String mit "_1" aufhört, bin ich jetzt verwundert, warum die "_1:x"-Version funktioniert und zufriedenstellend ist.
 

127.0.0.1

Bekanntes Mitglied
der String als sochles hört ja auch mit _1 auf........eben nur die "Zeile" nicht
Ich wollte nur dieses einen String rausfiltern (mit Split) und dann überprüfen

Da es nun aber mit der oben genannten RegEx geht kann ich mir das ersparen, oder ?! ;)
 

nazar

Mitglied
Es bedeutet zumindest mal, dass dein Split nicht funktioniert. Solange du diesen aber nicht weiter verwenden musst, sollte dir die jetztige Regex reichen.

Edit: Habe mir nochmal deine ersten Posts durchgelesen. Mit der jetztigen Regex suchst du nichtmehr nur nach einem Unterstrich und einer beliebigen Zahl, sondern
Zeichen + beliebig viele Zeichen + Unterstrich + Zahl + Doppelpunkt + Zeichen + beliebig viele Zeichen
Von daher liegt die Entscheidung ob es das ist was du willst bei dir. Wenn es nur Unterschrich und Zahl sein soll, mach das was Timbeau geschrieben hat.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
F RegEx bei Hexstring Allgemeine Java-Themen 8
H Frage regex greater than less than Allgemeine Java-Themen 7
N Regex schlägt nicht an Allgemeine Java-Themen 10
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
T regex case insensitive trimmed Allgemeine Java-Themen 6
S Zeichen | in regex Allgemeine Java-Themen 8
X Regex mit mehreren Bedingungen machen Allgemeine Java-Themen 5
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
C Java17 und Regex Allgemeine Java-Themen 13
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
N Gierigen Regex in nicht-gierigen umwandeln Allgemeine Java-Themen 4
N E-Mail Validator (ohne Regex!) Allgemeine Java-Themen 7
OnDemand Regex von bis Allgemeine Java-Themen 6
W Versionsnummer auslesen - Regex ist zickig Allgemeine Java-Themen 2
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
G Regex Allgemeine Java-Themen 2
L regex ganzer string? Allgemeine Java-Themen 2
MiMa Geldbetrag mit regex ermitteln. Allgemeine Java-Themen 14
W RegEx Stringliteral finden - Jflex Allgemeine Java-Themen 5
D Regex Probleme Allgemeine Java-Themen 2
Kirby.exe Regex charakter ignorieren Allgemeine Java-Themen 12
S Java SAT (Haltbarkeitsproblem) mit Regex Allgemeine Java-Themen 6
S [Regex] Nur diese Zeichen beachten Allgemeine Java-Themen 1
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
J Compilerfehler bis in java.util.regex.Pattern... Allgemeine Java-Themen 2
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
S Regex mit UND-Verknüpfung Allgemeine Java-Themen 1
P RegEx für Zeiten Allgemeine Java-Themen 7
D Regex: Komplettes Wort bekommen Allgemeine Java-Themen 3
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
P RegEx Allgemeine Java-Themen 3
W String Parsen und auf eigenes Muster anwenden (kein Regex) Allgemeine Java-Themen 11
Y regex | n-faches Vorkommen oder gar keins Allgemeine Java-Themen 6
turmaline Regex gegen Regex prüfen Allgemeine Java-Themen 4
HarleyDavidson Regex - Optimierung Allgemeine Java-Themen 4
M Regex für Zahleneingabe in JavaFX Textfield Allgemeine Java-Themen 18
T Best Practice Wortregeln RegEx Allgemeine Java-Themen 11
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
H Interpreter-Fehler Regex kompiliert nicht Allgemeine Java-Themen 5
M RegEx alle Matches ausgeben Allgemeine Java-Themen 5
Iron Monkey Mit Regex nach Beträge suchen Allgemeine Java-Themen 4
T REGEX Erklaerung Allgemeine Java-Themen 14
T Nur innerhalb des regex-Match ersetzen Allgemeine Java-Themen 9
H Pic Download / Regex Problem Allgemeine Java-Themen 7
F Frage zu Regex möglich Allgemeine Java-Themen 4
M Regex... mal wieder Allgemeine Java-Themen 3
H RegEx - Ersetze alles bis Leerzeichen Allgemeine Java-Themen 5
S regex verbrät CPU Allgemeine Java-Themen 6
V Regex Bereichs Filter Allgemeine Java-Themen 4
S Entfernen von allen Nicht-Buchstaben chars aus einem String ohne Regex..? Allgemeine Java-Themen 10
P Java String Regex Allgemeine Java-Themen 2
AyKay Regex XPath Allgemeine Java-Themen 4
C Regex (Case insensitive und Umlaute) Allgemeine Java-Themen 4
D Regex Raute erkennen Allgemeine Java-Themen 2
nrg Zweistelligen Zahlenbereich mit RegEx Allgemeine Java-Themen 8
GilbertGrape Regex-Problem Allgemeine Java-Themen 2
W Denkblockade RegEx Allgemeine Java-Themen 2
S eigene regEx schreiben Allgemeine Java-Themen 4
C Regex expandieren Allgemeine Java-Themen 6
C Regex Überschniedung von Ausdrücken Allgemeine Java-Themen 16
reibi RegEX - Teilstring Allgemeine Java-Themen 6
R Java-RegEx terminiert nicht Allgemeine Java-Themen 3
M Regex: Ich stehe auf dem Schlauch Allgemeine Java-Themen 2
V Kleines Regex-Problem Allgemeine Java-Themen 3
B Regex "Problem" Allgemeine Java-Themen 4
B RegEx: (Um-)formulieren eines Pattern zur Identifizierung komplexer URLs Allgemeine Java-Themen 7
P RegEx mit HTML Parser für Java möglich? Allgemeine Java-Themen 10
J Regex: Fertige URLS aus Javascript Allgemeine Java-Themen 3
N Java regex Allgemeine Java-Themen 5
K Regex JSON Allgemeine Java-Themen 3
J RegEx Ausdruck Allgemeine Java-Themen 2
J Regex: URLS aus CSS Allgemeine Java-Themen 2
G RegEx- Ausdruck Allgemeine Java-Themen 4
G RegEx kein Unterstrich Allgemeine Java-Themen 2
A Text via RegEx durchsuchen und teile ersetzten Allgemeine Java-Themen 5
C Regex: Zahl ohne führende Null Allgemeine Java-Themen 13
W RegEx Zeile parsen Medium Allgemeine Java-Themen 8
X Java String Regex - Sonderzeichen Filtern Allgemeine Java-Themen 5
S Dateiname mit Regex parsen Allgemeine Java-Themen 3
Loyd Noch ne Regex-Frage: Verschachtelte Ausdrücke Allgemeine Java-Themen 4
R Java Regex Frage Allgemeine Java-Themen 17
Daniel_L RegEx-Frage: Ersetzen in UBB ausschließen Allgemeine Java-Themen 2
M Große Datei mit Regex durchsuchen Allgemeine Java-Themen 4
S regex für einen Link Allgemeine Java-Themen 3
E Regex alles nach ? löschen Allgemeine Java-Themen 4
M RegEx-Frage Allgemeine Java-Themen 2
R Regex Tokenizer Allgemeine Java-Themen 11
E Regex HTML Tag und Inhalt löschen Allgemeine Java-Themen 4
H RegEX und eMail Allgemeine Java-Themen 4
L-ectron-X Regex zum Entfernen von mehrzeiligen Kommentaren Allgemeine Java-Themen 2
martin82 Regex - JTable - Filter Allgemeine Java-Themen 10
nrg Kleine Hilfe mit RegEx Allgemeine Java-Themen 2
B Regex-Fehler nach lib-Update Allgemeine Java-Themen 2
K Contrains oder Regex Allgemeine Java-Themen 3
J replaceAll , "[", "]" & regex Allgemeine Java-Themen 12
P RegEx und $-Zeichen als Literal Allgemeine Java-Themen 5
P RegEx - Worte ausschließen Allgemeine Java-Themen 8
S Regex - was isst denn {javaLetter} und {javaDigit}? Allgemeine Java-Themen 2
D Wie werden Regex-Gruppen kompiliert? Allgemeine Java-Themen 2
Stillmatic RegEx Matches ausgeben Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben