我正在尝试在 JSON 文件中获取包含大量文本的文件,并使用“查找和替换”对其进行批量编辑,而不是逐行浏览并复制+粘贴我想要进行的更改.
例如,如果我有一个水果列表,并且我想简化它分组的树类型,那么我会采用以下方法:
"Fruit And Veg\\Fruits\\Apples - fuji apple": {
"group": "Fuji apple tree"
},
"Fruit And Veg\\Fruits\\Apples - granny smith": {
"group": "GrannySmith tree"
},
"Fruit And Veg\\Fruits\\Pears - nashi": {
"group": "Nashi tree"
},
"Fruit And Veg\\Fruits\\Pears - concorde": {
"group": "concorde pear tree"
},
并使用查找和替换工具将其更改为:
"Fruit And Veg\\Fruits\\Apples - fuji apple": {
"group": "Apple Tree"
},
"Fruit And Veg\\Fruits\\Apples - granny smith": {
"group": "Apple Tree"
},
"Fruit And Veg\\Fruits\\Pears - nashi": {
"group": "Pear Tree"
},
"Fruit And Veg\\Fruits\\Pears - concorde": {
"group": "Pear Tree"
},
我想让它在第 1 行中搜索文本字符串(在本例中为
Apples
或 Pears
),然后替换第 2 行的内容(因此该行与 Apple Tree 或 Pear Tree 组匹配,如适用),并且对于文件中的每个条目,不对第 3 行进行任何更改。
我知道我需要分别运行苹果和梨的查找和替换,这没问题,但我不知道如何进行这项工作。
目前,我认为该文件包含我用于仅以复数形式搜索的文本 - 但如果事实并非如此,有没有办法让我指定要查找的“查找和替换”的“查找”部分查找“
\\Apple
”(包括前面的字符)而不是搜索“Apple
”或“Apples
”?
我尝试在这里查看其他问题,看看是否能找到相同的问题,但运气不佳 - 虽然我一直在尝试弄清楚如何使用 ^.* $1 等,从 Stack Overflow 上这些页面上给出的示例来看,我真的不知道我在做什么。即使使用“搜索模式 - 正则表达式”,并打开“.匹配换行符',到目前为止我尝试过的大多数操作都导致“查找:找不到文本”或“查找:无效的正则表达式”。
Fruit And Veg.+?(?:(Apples)|(Pears)).+\R.+?"group": \K".+tree"
(?1"Apple Tree")(?2"Pear Tree")
. matches newline
说明:
Fruit And Veg # literally
.+? # 1 or more any character, not greedy
(?: # non capture group
(Apples) # group 1, Apples
| # OR
(Pears) # group 2, Pears
) # end group
.+ # 1 or more any character
\R # any kind of linebreak
.+? # 1 or more any character, not greedy
"group": # literally
\K # forget all we have seen until this position
".+tree" # 1 or more character and tree
更换:
(?1"Apple Tree") # if group 1 exists, pur Apple Tree
(?2"Pear Tree") # if group 2 exists, put Pear Tree
截图(之前):
截图(之后):