2010-02-08 6 views
1

J'ai cette chaîneExpression régulière pour remplacer cette chaîne

"ABC-2341241244 | tb1 | value | tb2 | value | tb10 | value" 

Que puis-je faire avec regex pour remplacer, par exemple '| tb2 | value ' avec '' avec cela,

"ABC-2341241244 | tb1 | value | tb10 | value" 

Je sais la valeur tbxx est une variable que j'ai.

Le moteur Regex est javascript, pas .Net ou C#.

+2

Quel moteur regex? .NET? Java? Javascript? PERL? – Oded

+0

Avez-vous vraiment besoin d'un RegEx ici? Une chaîne pure remplacer serait beaucoup plus simple. –

+1

Si vous connaissez au préalable la sous-chaîne exacte, un simple remplacement (...) sera plus facile: pas besoin de regex. –

Répondre

3

La syntaxe exacte dépend de la langue que vous utilisez, mais vous devez échapper le caractère | car il a une signification particulière dans les expressions régulières.

En Perl, vous feriez quelque chose comme:

my $string = "ABC-2341241244 | tb1 | value | tb2 | value | tb10 | value"; 
$string =~ s/\| tb2 \| value //; 

En java, il serait:

String string = "ABC-2341241244 | tb1 | value | tb2 | value | tb10 | value"; 
string = string.replaceAll("\\| tb2 \\| value ", ""); 
+0

ok ... mais mon problème est que la valeur n'est pas "valeur", peut avoir des lettres et des chiffres – SlimBoy

0

javascript remplacer

var 
    deletePair = 'tb2', 
    strIn = "ABC-2341241244 | tb1 | value | tb2 | toDeletevalue | tb10 | value", 
    pattern = new RegExp("\\| " + deletePair + " \\| ([a-zA-Z0-9]+) ", "g"), 
    result = strIn.replace(pattern, ''); 

document.write(result === "ABC-2341241244 | tb1 | value | tb10 | value" 
    ? 'ok' 
    : 'failed' 
); 
document.write('<br />' + result); 

modifier

Ajouté deletePair dans lequel vous spécifiez ce clé dans votre représentation key | val que vous souhaitez supprimer

+0

ok ... mais mon problème est que la valeur n'est pas "valeur", peut avoir des lettres et des chiffres – SlimBoy

0

Vous n'avez pas assez d'informations pour une solution générique [1]. Votre chaîne est-elle garantie d'être régulière?

Il semble que vos données sont bien formés, - vous devez analyser en quelque sorte:

Python:

import csv 
input = "ABC-2341241244 | tb1 | value | tb2 | value | tb10 | value" 
parts = input.split("|") 
r = csv.reader([input],delimiter='|') 
parts = r.next() 
try: 
    i = parts.index(" tb2 ") 
    parts = parts[0:i] + parts[i+2:] 
except ValueError: 
    pass 

print "|".join(parts) 

impressions:

ABC-2341241244 | tb1 | value | tb10 | value 

[1] Est-ce votre délimiteur '|'? Ou est-ce ' | '? Pouvez-vous échapper | dans vos données? Cherchez-vous seulement sur tbXX identifiants?

+0

mon délimiteur est ' | '. Je veux faire ce que vous venez de faire – SlimBoy

+0

Comment puis-je faire cela en javascript? – SlimBoy

Questions connexes