/ / Wie mache ich eine "oder" Aussage in einem Java-Muster? - Java, Regex

Wie man eine "oder" Aussage in einem Java-Muster macht? - Java, Regex

Also im Grunde arbeite ich gerade an einemProgramm, das Antworten aus einem HTML-Code extrahiert und sie in einem Array speichert. Das Problem ist, dass, wenn ich versuche, ein Muster zu machen, um die Antworten zu trennen, ich scheinen kann, eine "oder" Aussage zu machen.

Die Antworten sind so auf dem HTML-Code gespeichert:

["h","e","l","l","o"," ","w","o","r","l","d"]

Mein Problem ist, dass, wenn ich es in einen String schreibe, der mit einem Leerzeichen (" ") wird durch das Muster nicht erkannt, also wenn ich es in eine Datei schreibe was sich zeigt ist helloworld, ohne Leerzeichen. Was ich tun möchte, ist ein Muster, das gleichzeitig die Buchstaben AND und die Leerzeichen erkennt, aber ich habe keine Ahnung, wie man eine "oder" Aussage in der Mitte eines Musters macht.

Das ist jetzt mein Muster, das nur die Buchstaben erkennt:

Pattern p= Pattern.compile(""[A-Z]+"");

EDIT: Noch funktioniert nicht ... Denkst du, es könnte etwas anderes sein? Hier ist ein Teil meines Codes (sorry, ich weiß, es ist ein Durcheinander):

// creates a String containing the letters separated by " "
public static String createString(BufferedReader in,BufferedWriter         out, String texto) throws IOException{
StringBuilder sb= new StringBuilder();
Pattern p = Pattern.compile(""[A-Z ""]"");

Matcher m= p.matcher(texto);
while(m.find()){
sb.append(m.group());
}
return sb.toString();
}
//splits the String in order to create an array with nothing but     letters
public static void toArray(String s, String[] lista, BufferedWriter out) throws IOException{

lista=s.split("["]");
for(String a:lista){
out.write(a);
System.out.print(a); // to check output
}

}

Antworten:

2 für die Antwort № 1

Füge einfach ein Leerzeichen zur Zeichenklasse hinzu:

public class HelloWorldRegex {
public static void main(final String... args) {
final String regex = ""([A-Z ])"";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
final String input = "["h","e","l","l","o"," ","w","o","r","l","d"]";
final Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.print(matcher.group(1));
}
}
}

Ausgabe: hello world

Testen Sie die Regex online: https://regex101.com/r/eL8uT9/3


-1 für die Antwort № 2

Was Sie jetzt haben, sagt nur, dass Sie "null oder mehr Buchstaben erwarten. Sie müssen sagen, dass Sie" einige Buchstaben oder ein Leerzeichen erwarten.

Pattern p = Pattern.compile(""[A-Z]+" | " " ");

Sie müssen den Operator oder verwenden. Auf diese Weise erwarten Sie, dass Sie null oder mehr Buchstaben oder ein Leerzeichen erwarten!