2010-02-09 3 views
0

J'ai besoin d'aide avec une expression régulière, s'il vous plaît aider si vous pouvezpattern matching Regex (Javascript/ASP)

je le code suivant: J'utilise Javascript et ASP

{Dans | inside | pendant | dans | dans la sphère de} {this} {article | pièce de écriture | éditorial | commentaire | paragraphe | section} {we} {nous | désirons | souhaiterto | vouloir pour | résoudre à | va} {tell} {you} {plus} {about | concernant | avec la référence to} {le}

Le code souhaité doit ressembler à ceci:

{Dans | intérieur | cours | en | dans la sphère de} ce {article | commentaire | | morceau de écriture | rédaction du paragraphe | section} { nous vous | désir de | wishto | veulent à | détermination à |} sera vous dire plus {à propos | concernant | en référence à } les

les crochets autour de la seule w ords avec non | devrait être retiré comme - ce - nous - vous en dire plus - dans l'exemple ci-dessus.

Je pense que la solution devrait être quelque chose pour remplacer le {il ne devrait pas comme ça

replace(/{.+?[^\|]/ig, ''); 

être | dans le code; {+.? [^ \ |] Et remplacer {rien

Ensuite, s'il n'y a pas de départ {pour remplacer le} rien

Je ne sais pas comment faire, et la façon de supprimer le {} où il n'y a pas | à l'intérieur sans enlever le contenu ...

Répondre

2
x.replace(/{([^|}]*)}/g, '$1') 
+0

+1, me battre de quelques secondes –

+0

Merci Marc - fonctionne 100% J'aime votre solution le mieux qu'il laisse des chiffres dans le texte comme {10 | dix} 10 et dix ... –

1

Essayez:

var string = "{hello|there} {yes} {no|me} {ok}"; 
string = string.replace(/{[A-Za-z0-9]+)}/g, "$1"); 

Vous donne:

{hello|there} yes {no|me} ok 
+0

s'il y a des chiffres dans la chaîne? –

+0

Merci vivin - Votre travail fonctionne, sauf pour le fait que s'il y a un nombre dans la ficelle je vais le perdre ... mais merci un million d'apprécier l'aide! –

+0

@Gerald ah, puisque vous avez dit "mots", je pensais juste "lettres". :) J'ai modifié la solution. –