在两个字符串之间添加变量空格

时间:2012-04-25 20:49:35

标签: regex

我没有使用编码语言。这必须是直接的正则表达式。

我需要在两个字符串之间添加一个可变长度的空格。我传递给正则表达式的字符串有字符串本身的空格数,需要替换:

string1 *27* string2

所以我需要在string1和string 2之间的字符串中插入27个空格

\*(\d+)\*

这是我的捕获,它似乎正在工作,但我试图设置我的替换:

\s{$1}

或者这个:

$&\s{$1}

那你怎么做的?我正在使用expresso进行验证,但并非我所使用的文本引擎都支持所有正则表达式模式。

2 个答案:

答案 0 :(得分:1)

直接正则表达式无法做到这一点。正则表达式需要某种解析功能来使用捕获的变量并将其转换为重复空格。

您也不希望更换工作方式。由于正则表达式的替换部分是直接文本替换,而不是另一个正则表达式求值器....但是,使用某种递归正则表达式会很酷:)

答案 1 :(得分:0)

使用perl风格regexp的一种方式:

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

输出:

string1                           string2