Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe einen StringBuffer den ich durchsuchen muss. Wenn er "1 Text Text Text Text" gefunden hat soll er das ausgeben
Code:
Pattern suche = Pattern.compile("1 .+\n");
ist ja nicht so schwer, aber mein Problem ist jetzt das er bei 1.1 kllaslfalkasfd etwas ausgibt (1 kllaslfalkasfd), ich will aber das er nur den Punkt 1 ausgibt, nicht 1.1 oder 2.1 usw.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
static Pattern pattern = Pattern.compile("1 .+\n");
static StringBuffer input = new StringBuffer("1 Text Text Text\n2.1 bla bla bla\n1 ggg ggg ggg\n");
public static void main(String[] args){
Matcher matcher = pattern.matcher(input);
boolean found = false;
while (matcher.find()) {
System.out.println("Element gefunden: " + matcher.group());
}
}
}
jetzt gibt er aus:
1 Text Text Text
1 bla bla bla //diese zeile brauche ich nicht
1 ggg ggg ggg
entweder du definierst, dass vor der 1 ein Zeilenumbruch kommen musst
und musst diesen dann noch ganz am Anfang in deinen String einfügen
oder du benutzt Sonder-Operatoren:
Code:
public class Test2
{
static Pattern pattern = Pattern.compile("^1 .+$",Pattern.MULTILINE);
static StringBuffer input = new StringBuffer("1 Text Text Text\n2.1 bla bla bla\n1 ggg ggg ggg");
public static void main(String[] args){
Matcher matcher = pattern.matcher(input);
boolean found = false;
while (matcher.find()) {
System.out.println("Element gefunden: " + matcher.group());
}
}
}
was nun bei 1.1 los ist (erkennen oder nicht, komplett ausgeben oder nur 1 ausgeben), ist noch ne andere Frage
ich muss den String noch durchsuchen ob so etwas vorkommt (4: Christina x), d.h. eine Zahl, Doppelpunkt, Abstand, Text, und am Schluss eine einzelnes zeichen (a-z)
public class Test {
static Pattern pattern = Pattern.compile("[0-9]: .+ [a-z]");
static StringBuffer input = new StringBuffer("4: Christina bla bla");
public static void main(String[] args){
Matcher matcher = pattern.matcher(input);
boolean found = false;
while (matcher.find()) {
System.out.println("Element gefunden: " + matcher.group());
}
}
}
nebenbei gefragt:
4: Christina bla bla b
wäre wieder ok?
wenn nach dem b kein la kommen darf, dann muss man andersrum überlegen was sein darf,
man kann es mehr oder weniger nur positiv formulieren,
also baue in dein Pattern ein, dass danach ein Leerzeichen oder sonstes Freizeichen oder wieder ein Zeilenende wie zuvor kommen soll