1

さて、私は一般的なオブジェクトの多くの ID を含むプロファイルに取り組んでいます。

より多くの機能を追加できるように、すべての初期コードを編集する必要がありました。約 1200 の ID を 1 つずつ手動で編集する必要がありました。したがって、Notepad++ は RegEx 関数を使用して編集全体を行うことができるのではないかと考えました。

ただし、問題は、引用符で囲まれた行 2から IDを取得し、この ID を括弧で囲む必要がある行 1に入れる必要があることです。このステップは複数回繰り返されるため、次のセットは 2 行目と 1 行目ではなく、4 行目と 3 行目などになります。

例:

Line 1: < InbagCount(11111) />
Line 2: < ItemID="12345" />
Line 3: < InbagCount(11111) />
Line 4: < ItemID="543" />

ここで、すべての11111を次の行の ItemIDに置き換える必要があります。

これは、ItemID="" 内のテキストと一致する、私が使用しているコードです。

(?<=ItemID=")(?:\\.|[^"\\])*(?=")

それらを見つけることはできますが、[置換] ボタンをクリックすると次のようになります。

InbagCount(?<=ItemID="?:\.|[^"\]*?=")

たぶん、メモ帳++はこの仕事のツールではありません.

誰が私が何を使うことができるか考えていますか?

事前に感謝します。助けていただければ幸いです:)

4

3 に答える 3

0

正規表現の代わりに notepad++ マクロを使用できます。十字線を 2 行目に配置し、[ホーム] を押して、メニュー マクロ > [記録を開始] をクリックし、次の手順を実行します。

  1. ctrl+right_arrow(あなたの番号まで、多分3回)
  2. ctrl+shift+right_arrow
  3. ctrl+c(コピー)
  4. 上矢印
  5. ctrl+right_arrow(あなたの番号まで、多分3回)
  6. ctrl+shift+right_arrow
  7. ctrl+v(貼り付け)

次にstop recording、およびプレスrun macro multiple times > until the end of file > run

于 2013-08-04T04:34:29.753 に答える
0

これは、WindowsのNotepad ++で必要に応じて機能 します

これがテキストであると仮定します:

< InbagCount(11111) />
< ItemID="12345" />
< InbagCount(11111) />
< ItemID="54321" />

Ctrl+H:

「検索対象:」で\(([0-9]*).*\r\n.*"([0-9]*)"

「で置換:」で\(\2\) />\n< ItemID="\2"

改行の問題はここで説明されています: Notepad++ newline in regex

実際に\1は、11111 タグと\2ItemID 番号の 2 つの正規表現キャプチャがあります。11111 タグのものは必要ありませんでした。

これはもう少し複雑ですが、ある程度の厳密さ (capture 式が 2 行目で機能すること) を前提としています。

  • ItemID と InbagCount 行は改行で区切られています。
  • 置換は、前の行の括弧内に含まれています
  • ItemID は二重引用符で囲まれています
于 2013-08-04T05:09:00.463 に答える
0

私は Windows を使用していないため、Notepad++ でテストすることはできませんが、あなたの要求を正しく理解していれば、それは単純な正規表現です。キーは行の境界を越えて一致しています。一度に 2 つの行を照合し、問題のテキストにキャプチャ グループを使用して、2 つの行を再構築します。

たとえば、次のように一致させることができます。

.*?ItemID="(\d+)" />

次のように置き換えます。

< InbagCount($1) />\n< ItemID="$1" />\n

このウェブサイトに示されているように。その Web サイトを使用して実際にコードを変換できる場合があります。

于 2013-08-04T04:38:13.957 に答える