3

私はコーディング言語を使用していません。これは正規表現でなければなりません。

2 つの文字列の間に可変長の空白を追加する必要があります。正規表現に渡す文字列には、文字列自体に空白の数が含まれているため、置き換える必要があります。

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フレーバー正規表現を使用する 1 つの方法:

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 に答える