好的,我正在处理一个包含许多对象ID的配置文件。
所有初始代码都必须进行编辑,因此可以添加更多功能,而且我需要逐个手动编辑大约1200个ID。所以我想也许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="?:\.|[^"\]*?=")
也许Notepad ++不是这项工作的工具。
有没有人知道我可以使用什么?
在此先感谢,如果您能帮助我,我将非常感激:)
答案 0 :(得分:0)
你可以使用notepad ++ macro而不是regex。将你的crusor放在你的第二行,按home然后点击menu macro&gt;开始录制,然后执行以下步骤:
然后stop recording
和pres run macro multiple times > until the end of file > run
答案 1 :(得分:0)
我无法使用Notepad ++进行测试,因为我没有Windows,但如果我正确理解您的请求,那么它就是一个简单的正则表达式。关键是跨越线边界匹配。您一次匹配两行,使用捕获组来处理相关文本并重构两行。
因此,例如,您可以匹配:
.*?ItemID="(\d+)" />
并替换为:
< InbagCount($1) />\n< ItemID="$1" />\n
如此website所示。您可以使用该网站实际转换代码。
答案 2 :(得分:0)
这可以在Windows上的Notepad ++ 中使用
假设这是文字:
< InbagCount(11111) />
< ItemID="12345" />
< InbagCount(11111) />
< ItemID="54321" />
控制+ H:
在“查找内容:”\(([0-9]*).*\r\n.*"([0-9]*)"
在“替换为:”\(\2\) />\n< ItemID="\2"
此处解释了换行问题:Notepad++ newline in regex
实际上有两个正则表达式捕获,\1
用于11111标记,\2
用于ItemID编号。没有必要使用11111标签。
这有点涉及,但它假设一些严格(捕获表达式在第2行上工作),