Ich habe den folgenden Code geschrieben:
Es gibt zwei Arrays in den sich jeweils die Regex befinden und im anderen Array der Replace-Ausdruck.
z.B.
In
gespeichert und in
gespeichert. Übrigens seht ihr in
jedesmal ein Doppel-Backslash, was richtig ist, da es sich um Java handelt.
Wenn ich die Ausdrücke so schreibe:
und
Funktioniert alles wunderbar.
Wenn ich es so wie oben programmiere, quasi den Wert im Array per Index auslese, funktioniert es nicht.
Warum nicht?
Habt ihr eine Idee?
PS: Den candidateString darf ich hier nicht nennen. Aber die Expressions passen und sind korrekt um den original candidateString zu erkennen.
Java:
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException;
import org.xml.sax.SAXException;
public class MatcherClass
{
public static void main(String args[]) throws XPathExpressionException,
ParserConfigurationException, SAXException, IOException
{
String[] regexes = new XMLwork().xmlRenameOld();
String[] replacement = new XMLwork().xmlRenameNew();
String candidateString = "darf ich an dieser Stelle nicht nennen";
Pattern p = Pattern.compile(regexes[0]);
Matcher matcher = p.matcher(candidateString);
String tmp = matcher.replaceAll(replacement[0]);
System.out.println(candidateString + "\n" + "replace: " + tmp);
}
}
Es gibt zwei Arrays in den sich jeweils die Regex befinden und im anderen Array der Replace-Ausdruck.
z.B.
In
Java:
regexes[0]="(\\w{1,})-(\\d{1,})-(\\w{1,})-(\\d{1,})-(\\w{1,})-(\\d{1,})-(\\w{1,}\\d{1,})--(\\d{1,})-(\\d{1,})_(\\w{1,})(.\\w{1,})"
Java:
replacement[0]="$1+$5+20$2+$4+$10$11"
Java:
regexes[0]
Wenn ich die Ausdrücke so schreibe:
Java:
Pattern p = Pattern.compile("(\\w{1,})-(\\d{1,})-(\\w{1,})-(\\d{1,})-(\\w{1,})-(\\d{1,})-(\\w{1,}\\d{1,})--(\\d{1,})-(\\d{1,})_(\\w{1,})(.\\w{1,})");
Java:
String tmp = matcher.replaceAll("$1+$5+20$2+$4+$10$11");
Funktioniert alles wunderbar.
Wenn ich es so wie oben programmiere, quasi den Wert im Array per Index auslese, funktioniert es nicht.
Warum nicht?
Habt ihr eine Idee?
PS: Den candidateString darf ich hier nicht nennen. Aber die Expressions passen und sind korrekt um den original candidateString zu erkennen.