3

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

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

string1 *27* string2

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

\*(\d+)\*

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

\s{$1}

或这个:

$&\s{$1}

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

4

2 回答 2

1

这对于直接的正则表达式是不可能的。正则表达式需要某种解析功能才能使用捕获的变量并将其转换为重复空格。

您希望替换工作的方式也是不可能的。由于正则表达式的替换部分是直接文本替换,而不是另一个正则表达式评估器....虽然有某种递归正则表达式会很酷:)

于 2012-04-25T20:52:03.357 回答
0

使用perl风味正则表达式的一种方法:

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

输出:

string1                           string2
于 2012-04-25T21:06:04.947 回答