Hallo,
ich habe folgendes Testprogramm (vereinfacht gegenüber meinem praktischen Fall):
Ausgabe:
Zeile 10 im Programm tut das, was ich erwartet habe. Allerdings bin ich auf die Verwendung von "$1" nur durch Zufall gestoßen, denn in der Javadoc zur Klasse Pattern (Java 1.5) steht zum Referenzieren von Gruppen:
Andere Frage: warum liefert Zeile 14 keinen Treffer?
ich habe folgendes Testprogramm (vereinfacht gegenüber meinem praktischen Fall):
Code:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Patterns
{
public static void main(String[] args)
{
String s1="g031234,G32222,G034444,G03666666,033333";
String s2=s1.replaceAll(" *[gG]([0-9]{1,8})", "$1");
System.out.println("s1 <"+s1+"> s2 <"+s2+">");
Pattern p=Pattern.compile("1234");
Matcher m=p.matcher(s1);
Boolean b=m.matches();
System.out.println("passt? --> "+ b);
System.out.println("group 1: "+p.matcher(s1).group(1));
}
}
Code:
s1 <g031234,G32222,G034444,G03666666,033333> s2 <031234,32222,034444,03666666,033333>
passt? --> false
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:461)
at Patterns.main(Patterns.java:17)
Also nix mit "$"...Back references
\n Whatever the n-th capturing group matched
Andere Frage: warum liefert Zeile 14 keinen Treffer?