0

アイテム番号とその説明の大きなコンマ区切りリストをファイルに書き込むかなり大規模な autolisp ファイル (約 4000 行) があります。以下に例を示します (番号と説明を除いて、すべてこれと同じように見えます)

>(write-line (strcat "0203," (itoa 1-2x4x8) ",    PCS   2x4x 92 5/8 STUD GRADE FIR" ) file)

「0203」は商品番号で、「2x4x 92 5/8 STUD GRADE FIR」は商品説明です。コンマや PCS (「ピース」の略) は関係ありません。重要なのは、その項目番号を新しいリストに合わせて変更する必要があるということです。これは、正規表現が役立つと信じているところですが、見つけるのに苦労しています。

基本的に、ファイルで説明 (上記の例のように) を検索し、4 桁の数字を新しい数字に置き換える必要があります。正規表現または拡張表現でそれを行うことができますか? (またはおそらく他の何か)そして明確にするために

番号は常に表示どおりに正確に配置された 4 桁であり、説明はファイル内で 1 回だけ発生し (正確です)、説明と置換する必要がある関連番号は常に同じ行にあります。

助けてください :)

4

1 に答える 1

0

正規表現がこれを支援するかどうかはわかりません。正規表現は、繰り返しパターンのある行を検索し、オプションでパターンを固定テキストまたは行上の別のパターンと一致する値に置き換える場合に最も役立ちます。

あなたが説明していることの私の理解では、あなたは各行で異なる固定テキストを探しており、検索テキストと1対1で関連する番号で行の一部を置き換えたいと考えています。これはまったく異なるユースケースです。検索テキストごとに繰り返し、検索テキストと新しい番号をリンクする別のテーブルを用意する必要があります。

私の見解では、検索テキストごとに正規表現を作成し、(一種のコマンドで)次のような古い番号から新しい番号への置換パターンを作成する必要があります。

s!\d+,(.*2x4x 92 5/8 STUD GRADE FIR)!1234,\2!

これは、4桁の数字とカンマに一致し、その後にコンテンツと検索テキストが続きます。置換により、このすべてが「新しい」番号、コンマ、および一致するキャプチャグループに置き換えられます。しかし、これらの正規表現行を作成することは、ファイル内で手動で置換を行うよりも本質的に多くの作業です...

于 2011-03-09T20:50:58.050 に答える