2012-04-25 3 views
3

Я не использую язык кодирования. Это должно быть прямое регулярное выражение.Добавление переменных пробелов между двумя строками

Мне нужно добавить переменную длину пробела между двумя строками. Строка Я передаю в регулярное выражение имеет ряд пробелов в самой строке и должны быть заменены:

string1 *27* string2 

так что мне нужно вставить 27 пробельные в эту строку между string1 и строки 2

\*(\d+)\* 

Это мой захват и, кажется, работает, но я пытался настроить мой заменить следующим образом:

\s{$1} 

или это:

$&\s{$1} 

Итак, как бы вы это сделали? Я использую expresso для моей проверки, но не все шаблоны регулярных выражений поддерживаются текстовым движком, который я использую.

ответ

1

Это невозможно с прямым регулярным выражением. Regex нуждался бы в каких-то синтаксических возможностях для использования захваченной переменной и перевода ее в повторяющиеся пробелы.

То, что вы хотите заменить на работу, также невозможно. Поскольку часть замены регулярного выражения заменяет прямой текст, а не другой оценщик регулярных выражений .... было бы неплохо иметь какое-то рекурсивное регулярное выражение, хотя :)

+0

да что то, что я пытался сделать: захватить внутренний номер и использовать его в качестве цифр для # пробельных символов для добавления. – ecathell

+0

@ecathell Извините, это более программно, а не то, как работает регулярное выражение –

0

Один из способов использования perl аромат regexp:

perl -e ' 
    $s = q[string1 *27* string2]; 
    $s =~ s/\s+\*(\d+)\*\s+/" " x $1/e; 
    print $s 
' 

Выход:

string1       string2 
+0

, как я сказал, используя любой язык кодирования, в моих обстоятельствах невозможно. – ecathell

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