Suche das erste Auftreten des Strings search im String str.

Suche das erste Auftreten des Strings search im String str. Die Funktion gibt einen Zeiger auf die Stelle im String zurück, an der der gesuchte String zum ersten Mal auftritt. Wird der Unterstring nicht gefunden, ergibt der Aufruf 0. Um die erste Position eines Substrings in einem String zu ermitteln, verwenden Sie die Funktion strstrpos.

Name Typ Default Beschreibung
Return char*   Zeiger auf das erste Auftreten des Strings str im String str.
0 : String nicht gefunden
str char* - Zeichenkette, die durchsucht werden soll
search char* - Suche nach diesem Unterstring. Muss ungleich "" sein.

[Ab v3.2.3 R2600, 08.08.2011] Der Suchstring darf ein regulärer Ausdruck sein. Reguläre Ausdrücke werden mit dem Präfix "regexp:" gekennzeichnet.

[Ab v3.3 R4000, 4. Jul 2013] Bei Verwendung des Präfixes "pcre:" ('perl compatible regular expressions') wird eine neuere Implementierung zur Berechnung regulärer Ausdrücke verwendet. Wir empfehlen die Verwendung dieses Verfahrens. Die alte Implementierung bleibt aus Gründen der Rückwärtskompatibilität erhalten.

Ab v3.4 R9000 und CS5 werden reguläre Ausdrücke ausschließlich durch PCRE verarbeitet. Mit regexp: markierte Ausdrücke werden automatisch an PCRE weitergeleitet. Lediglich CS4 verwendet weiter die alte Implementierung für GNU-kompatible reguläre Ausdrücke.

startPos int 0 Ab dieser Stelle mit der Suche beginnen.
matchlen int* 0 (nur bei Verwendung regulärer Ausdrücke) Länge des gefundenen Ausdruckes
matches int* 0 (nur bei Verwendung regulärer Ausdrücke) int-Array mit Angaben über das Ergebnis

Das Array enthält jeweils Startposition und Länge des nächsten gefundenen Ausdruckes. Im ersten Zahlenpaar stehen die Angaben für den gesamten Ausdruck. Die folgenden Paare enthalten jeweils die Angaben des i-ten Unterausdruckes. Unterausdrücke sind die in runde Klammern eingeschlossenen Teile des regulären Ausdruckes, also etwa ([a-z]{3,7}). Abgeschlossen wird das Feld durch das Paar (-1, 0).

Beachten Sie bitte, dass Unterausdrücke durchaus die Länge 0 liefern können. Wird der reguläre Ausdruck ([0-9])([a-z]{0,7})([0-9])) auf den Text "14" angewendet, ist nämlich der zweite Ausdruck leer.

Bei einer Angabe ungleich 0 muss das Array mind. um 4 Integers größer sein als die doppelte Anzahl der Klammerausdrücke im regulären Ausdruck - jeweils zwei int's für den Starteintrag, die n Subentries und die Ende-Markierung.

Eine einfache Definition eines Matches-Arrays für einen regulären Ausdruck mit 4 Untereinträgen.

int matches [6];
compile_options int 0 Zusatzoptionen beim Kompilieren des regulären Ausdruckes, siehe hier
study_options int 0 Zusatzoptionen beim Untersuchen des kompilierten regulären Ausdruckes, siehe hier
exec_options int 0 Zusatzoptionen beim Suchen des regulären Ausdruckes, siehe hier
strcpy (str, "Matthias");
strstr (str, "hi") ergibt "hias"

Und hier ein Beispiel mit regulären Ausdrücken.

int main ()
{
    char			str 	[512];
    int				pos		= 0;
    char		*	sub;
    int				matches	[2 * (1 + 2 +1)];	// 2 * (1 + Anzahl der der Klammern im Ausdruck + 1)
    int				i, p, l;
strcpy (str, "abc11188888#defgh11177777#hijklmn11166666#opqäöü11155555#qwertzu11144444#XYZ");
while (1) { sub = strstr (str, "pcre:([0-9]{6})(#)", pos, 0, matches); if (!sub) break;
wlog ("", "Pos %d : '%s'\n", pos, sub);
i = 0; while (1) { p = matches [i*2]; // startpos of sub token l = matches [i*2+1]; // length of sub token if (p < 0) break;
wlog ("", " %d. [%d, %d] : '%s'\n", i, p, l, strsubstring (str, p, l)); ++i; }
pos = matches [0] + matches [1] + 1; }
return 0; }

Seit
Version 1.2.1 (12. September 2005)
Reguläre Ausdrücke seit v3.2.3 R2600, 08.08.20112005)
Reguläre Ausdrücke mit "pcre:" seit v3.3.1 R4000, 4. Jul 2013 compile_options, study_options, exec_options seit v4.0.5 R20456, 10. Okt 2017

Verfügbarkeit
priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

Siehe auch
strchrpos
strstr
strstrpos

Alphabetic index HTML hierarchy of classes or Java