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