2010-02-08 7 views
1

Я эта строкойРегулярного выражения для замены этой строки

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

Что я могу сделать с регулярным выражением, чтобы заменить, например '| tb2 | value ' с '' с этим

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

Я знаю значение tbxx является переменная, которая у меня есть.

Механизм Regex - это javascript, а не .Net или C#.

+2

Какой двигатель регулярного выражения? .СЕТЬ? Ява? Javascript? PERL? – Oded

+0

Вам действительно нужен RegEx здесь? Чистая замена строки была бы намного проще. –

+1

Если вы знаете точную подстроку заранее, простая замена (...) будет проще: нет необходимости в регулярном выражении. –

ответ

3

Точный синтаксис зависит от языка, который вы используете, но вам нужно избежать символа |, поскольку он имеет особое значение внутри регулярных выражений.

В Perl'е вы могли бы сделать что-то вроде:

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

В Java это будет:

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

ok ... но моя проблема в том, что значение не является «значением», может иметь буквы и цифры – SlimBoy

0

яваскрипта заменить

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); 

редактировать

Добавлено deletePair, в котором указывается, что ключ в вашем key | val представлении вы хотите удалить

+0

ok ... но моя проблема в том, что значение не является «значением», может иметь буквы и цифры – SlimBoy

0

У вас нет достаточно информации для общего решения [1]. Является ли ваша строка гарантией регулярности?

Похоже, ваши данные хорошо сформированы - вы должны разобрать его каким-то образом:

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) 

печатает:

ABC-2341241244 | tb1 | value | tb10 | value 

[1] Является ли ваш разделитель '|'? Или это ' | '? Можете ли вы избежать | в ваших данных? Вы ищете только идентификаторы tbXX?

+0

мой разделитель - | ». Я хочу сделать то, что вы только что сделали – SlimBoy

+0

Как это сделать в javascript? – SlimBoy

Смежные вопросы