Forum Doku Wiki Blog

Forumsarchiv 2006, Oktober
Reguläre Ausdrücke suchen und ersetzen

archivierte Beiträge lesen

  1. (JAVASCRIPT) Reguläre Ausdrücke suchen und ersetzen von Uli, 09. 10. 2006, 11:36

Reguläre Ausdrücke suchen und ersetzen

Der folgende Beitrag wurde am 09. 10. 2006, 11:36 Uhr von Uli veröffentlicht.

Hallo - die Regulären Ausdrücke mal wieder :-/ ...

ich habe hier folgende Aufzählung:

"01. Beschreibung, 02. Beschreibung, 03. Beschreibung"

Diesen String möchte ich mittels Regulären Ausdrücken so umformatieren, dass jeweils das letzte Komma in der Aufzählung durch ein "und" ersetzt wird.

Wunschergebnis bei drei Elementen wäre demnach:

"01. Beschreibung, 02. Beschreibung und 03. Beschreibung"

Ich habe mir dazu folgendes Suchmuster ausgedacht: liefere mir ein Komma am Ende der Aufzählung, auf dass beliebige Zeichen folgen.

Als Regulärer Ausdruck:

reg = /,(?=\.+$)/;

if (reg.test(suchstring))
suchstring = suchstring.replace(reg,' und ');

Leider erwische ich mit meinem RegExp garnix ! Wer kann mir entscheidend weiterhelfen ?

Mfg Uli

Reguläre Ausdrücke suchen und ersetzen

Der folgende Beitrag wurde am 09. 10. 2006, 11:54 Uhr von derletztekick veröffentlicht.

Hallo Uli,

> Wer kann mir entscheidend weiterhelfen ?
Das kann ich leider nicht aber Alternativen bieten wie zB:


var str = "01. Beschreibung, 02. Beschreibung, 03. Beschreibung";
str = str.substring(0, str.lastIndexOf(",")) + " und" + str.substring(str.lastIndexOf(",")+1, str.length);



Mit freundlichem Gruß
Micha
--
LeagueEditor JavaScript kostenlose Ligaverwaltung || richtig Messen will gelernt sein

Reguläre Ausdrücke suchen und ersetzen

Der folgende Beitrag wurde am 09. 10. 2006, 12:27 Uhr von Uli veröffentlicht.

Herzlichen Dank auf jeden Fall - Alternativen verfolge ich auch immer gerne - obwohl Reguläre Ausdrücke doch recht kompakt und "elegant"
- aber entsprechend schwierig - sind.

Mfg Uli

Reguläre Ausdrücke suchen und ersetzen

Der folgende Beitrag wurde am 09. 10. 2006, 12:18 Uhr von Skeeve veröffentlicht.

Moin!

s/\s*,\s*(?=[^,]+$)/ und /;

Ersetzt das letzte Komma einschließlich umgebendem Whitespace durch " und ". (?=[^,]+$) ist ein look-ahead der besagt, daß kein bis zum Ende kein Komma auftreten darf.

-- Skeeve

Reguläre Ausdrücke suchen und ersetzen

Der folgende Beitrag wurde am 09. 10. 2006, 12:42 Uhr von Uli veröffentlicht.

Hallo Skeeve,

ausprobiert hab ichs noch nicht - versuche vor copy&paste immer erst, eine Sache zu durchdringen. Und da hapert es noch stellenweise:

s/\s*,\s*(?=[^,]+$)/ und /;

das einleitende s/ hab ich noch nicht verstanden
dann folgt ein whitespace, nicht oder beliebig oft wiederholt
dann folgt das gesuchte Komma
dann folgt ein whitespace, nicht oder beliebig oft wiederholt
dann - in Klammern - ein positives look-ahead, welches die Zeichenfolge nach dem gesuchten Komma definiert:
den Ausdruck in eckigen Klammern verstehe ich wieder nicht:
eine Zeichengruppe, die kein Komma enthält ???
Nach der eckigen Klammer: Zeichengruppe einmal oder beliebig oft wiederholt am Ende des Strings

Kannst Du mir ein weiteres mal auf die Sprünge helfen ?

MfG in jedem Fall

Uli

Reguläre Ausdrücke suchen und ersetzen

Der folgende Beitrag wurde am 09. 10. 2006, 13:23 Uhr von seth_not@home veröffentlicht.

gudn tach!

> s/\s*,\s*(?=[^,]+$)/ und /;
>
> das einleitende s/ hab ich noch nicht verstanden

ist perl-syntax.  beudetet in etwa das gleiche wie in javascript replace.

> dann folgt ein whitespace, nicht oder beliebig oft wiederholt

genauer: mindestens null mal whitespace.
ist aber unnoetig, wenn richtige kommasetzung vorausgesetzt werden kann.

> [...]
> dann - in Klammern - ein positives look-ahead, welches die Zeichenfolge nach dem gesuchten Komma definiert:
> den Ausdruck in eckigen Klammern verstehe ich wieder nicht:
> eine Zeichengruppe, die kein Komma enthält ???

[^,] ist ein beliebiges zeichen aus der zeichenklasse, die aus allen zeichen besteht, die kein komma sind. kurz: ein "nicht-komma"

> Nach der eckigen Klammer: Zeichengruppe einmal oder beliebig oft wiederholt am Ende des Strings

genauer: bis zum ende der zeile duerfen nur noch beliebig viele nicht-kommas (aber mindestens eins davon) stehen.

tsch
seth

Reguläre Ausdrücke suchen und ersetzen

Der folgende Beitrag wurde am 09. 10. 2006, 13:27 Uhr von Skeeve veröffentlicht.

Moin!

Und Dank Dir für die Erklärung!
> > das einleitende s/ hab ich noch nicht verstanden
> ist perl-syntax.  beudetet in etwa das gleiche wie in javascript replace.

Die Macht der Gewohnheit! Bin halt seit > 12 Jahren Perlator... ;-) und seit ca. 3 Jahren Perl Monk.

-- Skeeve

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4