Java Reference
In-Depth Information
Um nun beim nachfolgenden Aufruf von
exec()
die Suche wieder von vorne in der Zeichen-
kette zu beginnen, kompilieren wir mit
suche.compile("i.", "g");
das
RegExp
-Objekt
neu (mit den gleichen Suchparametern wie vorher - es soll ja nur die Startposition zurück-
gesetzt werden). In der folgenden Schleife lassen wir uns alle Trefer in einer Aufzählungs-
liste anzeigen. Wenn
exec()
den Wert
null
liefert, wird die Schleife abgebrochen.
Anschließend führen wir den gleichen Vorgang noch einmal für eine weitere Suchbedin-
gung durch (inklusive Test und Rekompilierung). Die abschließende dritte Suchbedingung
ist so formuliert, dass der Suchausdruck nicht im Testtext vorkommt.
Verwertung des resultierenden Datenfelds beim Durchsuchen
eines Strings mit exec()
In dem folgenden Beispiel soll noch einmal eine Zeichenkette unter Verwendung der
RegExp
-
Methode
exec()
nach Übereinstimmung mit einem vorgegebenen Suchpattern getestet wer-
den. Da die Methode als Rückgabewert ein Datenfeld liefert, wollen wir den Fall auch einmal
formulieren. Die Bedeutung des Datenfelds ist nämlich nicht, dass nach
exec()
mehrfache
Trefer dort autauchen. Dazu muss die Methode - wie wir gesehen haben - mehrfach aufge-
rufen werden. Das Datenfeld verfügt aber über ein paar andere Informationen, die nützlich
sein können, natürlich über die Eigenschat
length
. Das erste Element des Datenfelds ent-
hält die letzte gefundene Übereinstimmung in der Zeichenkette. Des Weiteren verfügt der
Rückgabewert über die Eigenschat
input
. Das ist die zu durchsuchende Zeichenkette. Am
interessantesten ist aber
index
- die Position des Trefers. Beispiel
(kap7_11.html):
Listing 7.34■
Anwendung von exec() und Auswertung der Werte in den resultierenden Eigen-
schaten
...
<body>
<script type="text/javascript">
testText =
"Hans Dampf, P01, Fred Feuerstein, P02, Barny Geröllheimer, P03";
regausdruck = /(P\d\d)/g;
do {
erg = regausdruck.exec(testText);
if (erg != null) {
document.write("Zu durchsuchende Zeichenkette: " +
erg.input + "<br />");
document.write("Größe des Datenfeldes: " +
erg.length + "<br />");
document.write("Position des Treffers: " + erg.index + "<br />");
document.write("Treffer: " + erg[0] + "<hr />");
} else break;
} while (true)
</script>
</body>
</html>
Der Testtext enthält Namen und Personennummern, die alle mit dem Buchstaben
P
begin-
nen, dem zwei Zifern folgen. Diese Personennummern wollen wir extrahieren. Das macht
das Suchpattern (
regausdruck = /(P\d\d)/g;
). Beachten Sie den Modiizierer
g
. Mit
erg
= regausdruck.exec(testText);
wird der Suchstring der
exec()
-Methode als Parameter
übergeben und der Rückgabewert einer Variablen
erg
zugewiesen. In der Schleife werten
Search WWH ::
Custom Search