3

{すべての数値サブシーケンスが...}ペアで囲まれるように文字列を変換したいと思います。

例えば:

input_string = "APPL[E]5XXXX"

output_string = "APPL[E]{5}XXXX"

たとえば、各文字列には1つ以上の数字を含めることができBASIC76XXXXX98ZZZZ、出力は次のようになります。BASIC{76}XXXXX{98}zzzz

これを達成できるかどうかわからない。どんな助けでも大歓迎です。

4

2 に答える 2

9

私はあなたがこのようなものを探していると思います:

$string =~ s/(\d+)/{$1}/g;

$1これにより、連続する数字が一致し、中括弧で囲まれた最初にキャプチャされたサブストリング(一致全体と一致します)に置き換えられます。すべてのgオカレンスが置き換えられていることを確認することです。

于 2012-11-27T16:02:25.240 に答える
5

これは確かに可能です。

数字に一致する正規表現が必要であり、数字をキャプチャしてから、一致を中括弧で囲まれたセットに置き換えます。

my $input = 'APPL[E]5XXXX';
$input =~ s/(\d+)/{$1}/g;
  • 一致する\d+数字。
  • ()キャプチャして保存し$1ます。
  • これs///は置換正規表現です。
  • そして最後に、最後に/g「グローバル」を意味します。別名、すべての試合でこれを行います。
于 2012-11-27T16:09:14.597 に答える