Designproblem, Regex

  • Themenstarter Gelöschtes Mitglied 5909
  • Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gelöschtes Mitglied 5909

Gast
Zunächst erklär ich mal kurz was ich vorhabe:
Ich möchte ein kleinen board-code-converter schreiben,
der die codes zwischen zwei boards hin und her convertieren kann. (später vielleicht mehr)

Mein erstes Problem:
Wie mache ich den code möglichst universell?
Ich habe mich dafür entschieden, einen Singleton RegexManager zu schreiben, der die Regex verwaltet.
Die Regex sind in einer .txt file gespeichert und werden zunächst geladen.
(mit "," abgetrennt und split() in ein String[] geladen - eventuell schönere variante?)
Der Manager übergibgt nun meinem RegexHandler ein regex und convertiert alles für diese eine regex.
Irgendwo muss aber noch hin, welches quell und zielformat ist -
und ich will später noch ein GUI dazu schreiben (mein erstes GUI).
Wo soll der input String und der output String verwaltet werden?

was würdet ihr am design ändern?

Mein zweites Problem:
Regex.
Ich habe bisher noch nix mit Regex gemacht, außer replaceAll() und replace() vielleicht...
was für die einfachen Tags noch ok ist.
Aber wie Konvertiere ich zum Beispiel [font face=courier color=red size=4]...[/font]
in ...
und umgekehrt? Und was mach ich, wenn da außenrum noch ein Link is?
Desweiteren kann ich ja dann replaceAll() z.b. nicht mehr benutzen,
da der ja sonst mehrere unterschiedliche Links mit dem ersten Link den er findet ersetzt - oder?

Was ich bisher habe:

Code:
package bcc.logic;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class RegexManager {
	
	private final static String eZBoard = "./Ezboard.txt";
	private final static String vBulletin = "./vBulletin.txt";
	private static RegexManager INSTANCE;
	private static String[] regex;
	private static String input;
	private static String output;
	
	private RegexManager() {
	}

	public RegexManager getInstance() {
		if (INSTANCE == null) {
			return new RegexManager();
		} else {
			return INSTANCE;
		}
	}
	
	/**
	 * Loads regular expressions from a file, stored on the local system.
	 * @param file text-file with regular expressions, seperated with ",".
	 * @return String-array with all regular expresseions from the file.
	 */
	private static String[] loadRegex(File file) {
		String line = "";
		String regex = "";
		try {
			FileReader fReader = new FileReader(file);
			BufferedReader buffer = new BufferedReader(fReader);
			while ((line = buffer.readLine()) != null) {
				regex+= line;
			}
			fReader.close();
			buffer.close();
		} catch (FileNotFoundException fnfe) {
			System.err.println("File " + file + "not found");
		} catch (IOException ioe) {
			System.err.println(ioe.getMessage());
		}
		regex.replaceAll("\n","");
		return regex.split(",");
	}

	public void convertAll() {
		regex = loadRegex(new File(eZBoard));
		RegexHandler handler = new RegexHandler(regex[0]);
		for (int i = 1; i < regex.length; i++) {
			handler.convert();
			handler.setRegex(regex[i]);
		}
	}
	
	public static String getInput() {
		return input;
	}

	public static void setInput(String input) {
		RegexManager.input = input;
	}

	public static String getOutput() {
		return output;
	}

	public static void setOutput(String output) {
		RegexManager.output = output;
	}
	
}

Code:
package bcc.logic;

public class RegexHandler {
	
	private String regex = "";

	public RegexHandler(String regex) {
		this.regex = regex;
	}

	public String getRegex() {
		return regex;
	}

	public void setRegex(String regex) {
		this.regex = regex;
	}
	
	public void convert() {
		//input String mit aktuellem regex bearbeiten
	}
}


hier is eine übersicht der tags:
http://www.mytempdir.com/811011

Danke schonmal
 

Wildcard

Top Contributor
Mal angenommen du verwendest quelloffene Forensoftware:
Ist es dann nicht einfacher du verwendest die schon vorhandenen Teile der Forensoftware zum parsen und zum Aufbauen des Baums und überführst anschließend nur den Baum auf die neue Syntax?
Regex alleine ist für deine Zwecke wohl nicht ausreichend...
btw: replaceAll und split verwenden zwat Regex, aber um höhere Sachen zu machen brauchst du die Pattern Klasse und die Matcher Klasse...
 
G

Gelöschtes Mitglied 5909

Gast
vbulletin is kommerziell und ezboard auch...
das muss doch irgendwie gehn
 

Wildcard

Top Contributor
Gehen schon, aber ich kann mir fast nicht vorstellen das RegEx ausreichend ist (hab mir die Syntax nicht weiter angesehen). Vermutlich wirst du Parsen müssen.
Viel Spaß damit :###
 
G

Gelöschtes Mitglied 5909

Gast
des hilft mir nu nicht wirklich weiter, weil ich nich weiß wie ich einen parser schreib.
Ich könnte aber einen XML parser umschreiben, beispielsweise SAX, der dann [ und ] statt <> annimmt. Geht das? wenn ja, wie
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Vererbung Designproblem beim Vererben Java Basics - Anfänger-Themen 3
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
B Regex Order unwichtig bei Lookaheads? Java Basics - Anfänger-Themen 7
F RegEx Hilfe Java Basics - Anfänger-Themen 5
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
W RegEx Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
A Zusammengesetzte Nomen/Straßennamen mit Regex-Ausdrücken trennen Java Basics - Anfänger-Themen 8
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
H Java Regex Aufzählung kontrollieren Java Basics - Anfänger-Themen 3
Nooobi Regex und .matches() geben keine Ausnahme Java Basics - Anfänger-Themen 10
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
K Wie verneine ich einen Regex? Java Basics - Anfänger-Themen 2
L Hilfe bei RegEx Java Basics - Anfänger-Themen 4
Dimax RegEx Java Basics - Anfänger-Themen 10
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
O Regex bei ReplaceAll ersetzt Wort und Sonderzeichen nicht. Java Basics - Anfänger-Themen 9
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
L Regex issue Java Basics - Anfänger-Themen 4
B Regex Kombination benötigt Java Basics - Anfänger-Themen 5
strohkolben Regex Java Basics - Anfänger-Themen 3
OnDemand Regex oder Split? Java Basics - Anfänger-Themen 5
I String.split regex Frage Java Basics - Anfänger-Themen 2
C RegEx Problem Java Basics - Anfänger-Themen 4
Dimax RegEx funktionieren nicht Java Basics - Anfänger-Themen 7
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
K substitute mit regex Java Basics - Anfänger-Themen 10
G RegEx Java Basics - Anfänger-Themen 11
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
M Regex zum Integer.parseInt Java Basics - Anfänger-Themen 4
G Regex Java Basics - Anfänger-Themen 4
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
M Regex anpassen Java Basics - Anfänger-Themen 19
C Regex-Problem Java Basics - Anfänger-Themen 4
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
C Positive und negative Zahlen mit Regex extrahieren Java Basics - Anfänger-Themen 8
F RegEx für Email Java Basics - Anfänger-Themen 2
F RegEx "+" nur als Zeichen, nicht als Operator oder Sonstiges Java Basics - Anfänger-Themen 2
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
FelixN RegEx Erläuterung "ˆ[ˆa-zA-Z]+$" Java Basics - Anfänger-Themen 6
F Regex Hilfe Java Basics - Anfänger-Themen 3
I Regex findet keine Treffer Java Basics - Anfänger-Themen 4
C Regex Java Basics - Anfänger-Themen 2
C Probleme bei Regex Java Basics - Anfänger-Themen 9
B Regex ignorieren von Groß - Kleinschreibung Java Basics - Anfänger-Themen 1
F Regex für Inlineformatierungen Java Basics - Anfänger-Themen 12
W Einfachen, ein beliebiges Zeichen oft erkennenden Regex Parser selber schreiben - wie vorgehen? Java Basics - Anfänger-Themen 12
O Regex Java Basics - Anfänger-Themen 2
F Switch Case Problem mit Regex lösen? Java Basics - Anfänger-Themen 6
H regex-Problem Java Basics - Anfänger-Themen 2
F Ist das ein korrekter Regex-Ausdruck? Java Basics - Anfänger-Themen 12
M Zahlenbereich mit RegEx Java Basics - Anfänger-Themen 3
B Hilfe bei Regex - Erstellung Java Basics - Anfänger-Themen 5
D regex Aufbau Frage Java Basics - Anfänger-Themen 4
W RegEx Matcher + Pattern und Emails Java Basics - Anfänger-Themen 8
R Rechenzeichen als regex Java Basics - Anfänger-Themen 10
S Ich verstehe die RegEx Tabelle von Javadoc nicht so ganz Java Basics - Anfänger-Themen 3
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
F RegEx Problem Java Basics - Anfänger-Themen 8
F Regex Hilfe Java Basics - Anfänger-Themen 14
G String nach Contains/Regex Java Basics - Anfänger-Themen 2
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
K RegEx - Multiple Line Java Basics - Anfänger-Themen 3
S Regex Pattern Java Basics - Anfänger-Themen 3
K Regex: illegal character range Java Basics - Anfänger-Themen 4
F RegEX Hilfe Java Basics - Anfänger-Themen 8
U Regex für kommaseparierte Zahlen Java Basics - Anfänger-Themen 1
K Operatoren Regex für 10er Zahlen Java Basics - Anfänger-Themen 8
V Java Regex richtig parsen Java Basics - Anfänger-Themen 2
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
N mein RegEx Java Basics - Anfänger-Themen 2
C Lösung für RegEx in Java gesucht Java Basics - Anfänger-Themen 2
B Java - Reguläre Ausdrücke - RegEx oder Regular Expressions - Eckige Klammern Java Basics - Anfänger-Themen 2
M Regex/matcher Java Basics - Anfänger-Themen 2
T Methoden String.matches() - Regex Java Basics - Anfänger-Themen 2
truesoul Regex für www Java Basics - Anfänger-Themen 0
N Methoden Straßennamen und Hausnummer - RegEx Java Basics - Anfänger-Themen 19
W Erste Schritte Regex negieren Java Basics - Anfänger-Themen 3
W String match mit Wildcard ODER Regex Java Basics - Anfänger-Themen 1
E useDelimiter-Anwednung / Regex Java Basics - Anfänger-Themen 2
C java regex Java Basics - Anfänger-Themen 2
C Regex zum matchen ausserhalb von Tags Java Basics - Anfänger-Themen 3
O Regex zwischenspeichern Java Basics - Anfänger-Themen 6
O Regex Java Basics - Anfänger-Themen 5
R Einfacher Regex Java Basics - Anfänger-Themen 3
V RegEx Java Basics - Anfänger-Themen 15
HoloYoitsu Datentypen replaceAll() mit regex? Java Basics - Anfänger-Themen 5
G regex Verständnis Problem Java Basics - Anfänger-Themen 3
G verwendung von regex Java Basics - Anfänger-Themen 3
X Regex splitten Java Basics - Anfänger-Themen 5
T Regex Problem Java Basics - Anfänger-Themen 4
B String nach regex überprüfen Java Basics - Anfänger-Themen 6
J Regex Ausdrücke im Array - Wieso werden sie nicht erkannt? Java Basics - Anfänger-Themen 4
N Regex Java Basics - Anfänger-Themen 4
F String.replaceAll() funktioniert nicht richtig oder habe ich den falschen Regex?? Java Basics - Anfänger-Themen 3
J Regex mit Return Java Basics - Anfänger-Themen 3
I Rechenoperatoren mit Regex splitten Java Basics - Anfänger-Themen 12

Ähnliche Java Themen


Oben