【问题标题】:How to append certain strings with Regex using notepad++如何使用记事本++使用正则表达式附加某些字符串
【发布时间】:2015-05-01 10:13:14
【问题描述】:

我正在尝试通过添加带有一些替代文本的新行来修改 Notepad++ 中 json 中的一些字符串。例如,文档某一部分的输入将是

"type": "apples_oranges_one",  
"attribute": "bananas",

"type": "tomatoes_beans_celery",  
"attribute": "bannanas",

然后我希望结果是

"type: "apples_oranges_one",  
"type_alt": "strawberries_oranges_two",  
"attribute": "bannanas",  

"type": "tomatoes_beans_celery",  
"attribute": "bannanas",  

等等

我已经使用正则表达式通过使用查找/替换来查找来完成此操作

"type":"apples_oranges_one",  

并用字符串替换它

"type": "apples_oranges_one",  \n "type_alt": "strawberries_oranges_two",

有没有办法做到这一点,只需附加到“type”:“apples_oranges_one”,而不必替换整个字符串?我知道这似乎是一个很小的差异,但它会使我正在做的事情更有效率。

【问题讨论】:

  • 请正确格式化。

标签: regex string append notepad++


【解决方案1】:

使用捕获组并在替换中引用它。

查找:

("type": "apples_oranges_one",)

替换:

\1\n "type_alt": "strawberries_oranges_two",

在 Find 中,() 表示捕获组。 () 中的子表达式捕获的所有内容都将被“捕获”,以便您以后参考。

在替换中,您使用 \1 引用捕获的组。

如果您有多个捕获组,每个组将根据该组的 ( 相对于所有其他捕获组的 (s 的顺序进行编号(括号想要从字面上匹配)。

这意味着对于正则表达式((a)(b))\1 将是ab\2 将是a,而\3 将是b

【讨论】:

  • 我尝试了这个,但由于某种原因它不起作用:(搜索框返回以下错误查找:找不到文本“(“type”:“apples_oranges_one”,)”可以我正在寻找的字符串有引号的事实以某种方式混淆了语法?
  • 正则表达式不关心引号。你确定正则表达式框被选中了吗?编辑:我意识到我的错误。我提供的“查找”字段中有错字。需要在“:”后面加一个空格。对不起。会修复的。
  • 发现问题了!似乎是逗号打破了它。我没有找到 ("type":"apples_oranges_one",),而是将其设置为 find ("type":"apples_oranges_one"),这样就成功了!非常感谢您的建议
【解决方案2】:

是的,这是可能的。

使用 Regex 表达式,您可以使用捕获组 () 来匹配/捕获一个组,然后在替换部分您可以使用 \1、\2、\3 等来获取匹配的组。

查找:

("type": "apples_oranges_one",) ("attribute": "bananas",)

替换:

\1\n"type_alt": "strawberries_oranges_two",\n\2

【讨论】:

  • 谢谢 :) 我不得不把逗号放在末尾括号外才能让它工作,但这正是我所追求的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 2017-08-23
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
  • 2020-01-06
相关资源
最近更新 更多