-1

パターンを持つファイルのバッチがあります

AB 001 CD.txt
AB 002 FG.txt
AB 003 ID.txt ...

最初の 2 文字は一定で、最後の 2 文字はすべて異なります。

最初と最後の 2 文字はそのままにして、途中の数字を (xxx + 2) に変更したいと思います。

AB 001 CD.txt -> AB 003 DC.txt
AB 002 FG.txt -> AB 004 FG.txt

私は正規表現が初めてなので、これまでにできる最善の方法は [0-9] の数字を見つけることですが、置換パターンが必要です。

「RegExr」というアプリケーションでこれをテストして、置換一致を見つけようとしているだけであることに注意してください。これが正規表現で実行可能かどうかはわかりません。

4

2 に答える 2

1

ファイル名を一致させるには、次の正規表現を使用できます。

^AB (\d{3}) .*$

ただし、数字の部分を正規表現だけに置き換えることはできません。使用している言語に指定された関数を使用する必要があります。

今から、最初に一致したグループを取得し、それを整数に変換し、2 を増やし、値の左側に欠落しているゼロを追加し、最初のグループで言及されたこの文字列に置き換える必要があります。

于 2013-01-18T11:41:51.240 に答える
0

これは、正規表現にはあまり適していません。正規表現では計算できません。したがって、数値操作は厳しく制限されています。残念ながら、正規表現はこの仕事には不適切な技術です。ただし、できることは、次のようなコールバック (使用する言語によって異なります) を使用することです (疑似コード、使用している言語によって異なります)。

result = regex_replace_callback('^(\w\w) (\d+) (\w\w).txt)$',
                                increment_match,
                                your_string)

function increment_match(match):
    return match[1] + " " + (int(match[2]) + 2) + " " + match[3]
于 2013-01-18T11:42:27.370 に答える