Regex 正则表达式-在引号之间查找文本并在括号之间替换
好的,我正在开发一个概要文件,其中包含很多对象的ID 所有的初始代码都需要编辑,这样才能添加更多的功能,而我需要一个接一个地手动编辑大约1200个ID。所以我想也许记事本++可以使用正则表达式函数为我做整个编辑 然而,问题是,我需要从第2行中检索ID,该ID用引号括起来,然后将该ID放入第1行,该行必须位于括号之间。此步骤将重复多次,因此下一组将不是第2行和第1行,而是第4行和第3行,依此类推 例如:Regex 正则表达式-在引号之间查找文本并在括号之间替换,regex,replace,find,quotes,parentheses,Regex,Replace,Find,Quotes,Parentheses,好的,我正在开发一个概要文件,其中包含很多对象的ID 所有的初始代码都需要编辑,这样才能添加更多的功能,而我需要一个接一个地手动编辑大约1200个ID。所以我想也许记事本++可以使用正则表达式函数为我做整个编辑 然而,问题是,我需要从第2行中检索ID,该ID用引号括起来,然后将该ID放入第1行,该行必须位于括号之间。此步骤将重复多次,因此下一组将不是第2行和第1行,而是第4行和第3行,依此类推 例如: Line 1: < InbagCount(11111) /> Line 2: &l
Line 1: < InbagCount(11111) />
Line 2: < ItemID="12345" />
Line 3: < InbagCount(11111) />
Line 4: < ItemID="543" />
第1行:
第2行:
第4行:
现在,我需要用下一行的ItemID替换所有的11111
这是我一直在使用的代码,它与ItemID=“”中的文本匹配
(?您可以使用记事本++宏而不是正则表达式。将游标放在第二行,按home键,然后单击menu macro>start recording,然后执行以下步骤:
ctrl+右箭头(直到你的号码,可能三次)
ctrl+shift+右箭头
ctrl+c(复制)
向上箭头
家
ctrl+右箭头(直到你的号码,可能三次)
ctrl+shift+右箭头
ctrl+v(粘贴)
然后停止录制
,并按住多次运行宏>,直到文件结束>运行
我无法使用记事本++进行测试,因为我不使用Windows,但如果我正确理解了您的请求,它是一个简单的正则表达式。该键跨行边界匹配。如果一次匹配两行,请为te使用捕获组有问题的xt和重建这两条线
因此,例如,您可以匹配:
.*?ItemID="(\d+)" />
并替换为:
< InbagCount($1) />\n< ItemID="$1" />\n
\n \n
如图所示。您可以使用该网站实际转换代码。这将在Windows上的记事本++中运行,如您所愿
假设这是文本:
< InbagCount(11111) />
< ItemID="12345" />
< InbagCount(11111) />
< ItemID="54321" />
Ctrl+H:
在“查找内容:\([0-9]*)中。*\r\n.*([0-9]*)”
在“替换为:”\(\2\)/>\n
新行问题解释如下:
实际上有两个正则表达式捕获,\1
用于11111标记,而\2
用于ItemID号。11111标记不需要一个正则表达式捕获
这有点复杂,但它假定了一些严格性(捕捉表达式在第2行工作),即
- 换行符分隔ItemID和InbagCount行
- 替换内容包含在前一行的括号内
- ItemID被双引号包围
你是怎么找到那个正则表达式的?它试图匹配反斜杠\
和点
。你觉得它有意义吗?嗯,我在stackoverflow的某个地方找到了它,它最初用于查找引号之间的ID。但在尝试替换时它没有任何作用。请看我的答案,它可以使用Notepad++和RegHa,虽然这是一个聪明的建议,但它不会起作用。原因是ItemID有时会有3个字符长,有时会有4或5个字符长。感谢您的尝试!这就是为什么我使用ctrl,这忽略了lengthLol,这太神奇了,我不知道ctrl的诀窍。我想也可以这样做,但另一位先生也发了帖子使用正则表达式的解决方案,结果是“更少”工作。不过也谢谢你,这应该很好!你先生是我的英雄,有点。你链接的那个网站允许我做我在Notepad++中做不到的事情。出于某种原因,当我输入完全相同的搜索时,它不会接受\n,即使我勾选了正则表达式。无论如何,谢谢你。
< InbagCount($1) />\n< ItemID="$1" />\n
< InbagCount(11111) />
< ItemID="12345" />
< InbagCount(11111) />
< ItemID="54321" />