Hallo Leute,
ich habe da eine Klasse geschrieben, die einen String mit Regex-Patterns splitten sollte. Ich kanns nicht mit string.split("hier wäre ein Regex pattern") machen, weil ich die Methode weder mehrere Patterns annehmen kann, noch die Stücke, in denen der Regex matcht zurückgibt:
eingentlich wäre es ja einfach, aber ich bekomms irgendwie nicht hin :bahnhof:. Danke an alle, die mir helfen.
edit:
Grammatikfehler
ich habe da eine Klasse geschrieben, die einen String mit Regex-Patterns splitten sollte. Ich kanns nicht mit string.split("hier wäre ein Regex pattern") machen, weil ich die Methode weder mehrere Patterns annehmen kann, noch die Stücke, in denen der Regex matcht zurückgibt:
Java:
package cyrill.jx.compiler;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class RegexTokenizer {
private CharSequence input;
private Matcher[] matchers;
private int lastEnd = 0;
private int line = 0;
public RegexTokenizer(CharSequence input, Pattern[] patterns) {
this.input = input;
matchers = new Matcher[patterns.length];
for (int i = 0; i < patterns.length; i++) {
matchers[i] = patterns[i].matcher(input);
}
}
public String nextToken() {
for (int i = 0; i < input.length(); i++) {
if (input.charAt(i) == '\n' || input.charAt(i) == '\r') {
line++;
}
if (Character.isWhitespace(input.charAt(i))) {
continue;
}
for (int j = 0; j < matchers.length; j++) {
System.out.println(matchers[i].find(lastEnd));
if (matchers[i].find(i) && matchers[i].start() == i) {
int start = matchers[i].start();
int end = matchers[i].end();
i += end;
return input.subSequence(start, end).toString();
}
}
}
//throw new CompilerException("in line: " + line);
return null;
}
public boolean hasNextToken() {
boolean hasNext = false;
if (lastEnd == input.length() - 1) {
return false;
}
for (int i = 0; i < matchers.length; i++) {
if (matchers[i].find(lastEnd)) {
hasNext = true;
}
}
return hasNext;
}
}
eingentlich wäre es ja einfach, aber ich bekomms irgendwie nicht hin :bahnhof:. Danke an alle, die mir helfen.
edit:
Grammatikfehler
Zuletzt bearbeitet: