【问题标题】:Notepad++: reemplace ocurrences of characters before other characterNotepad ++:在另一个字符之前替换出现的字符
【发布时间】:2021-01-15 16:27:41
【问题描述】:

我有一个文件,其文本如下:

“标题”=“正文”

我想删除 = 之前的两个 ",保持这样的状态:

标题 = “正文”

到目前为止,我设法选择了第一块文本:

.+(=)

这会选择直到 = 的所有内容,但我找不到如何重新替换(或删除)两者 " 。

有什么建议吗?

【问题讨论】:

  • 尝试(?:\G(?!^)|^(?=.*=))[^"=\v]*\K" 并替换为空字符串。

标签: regex replace notepad++


【解决方案1】:

您可以在替换中使用捕获组,并匹配要删除的双引号,同时在右侧断言等号。

查找内容:

"([^"]+)"(?=\h*=)
  • " 字面匹配
  • ([^"]+) 捕获组 1,匹配除 " 之外的任何字符 1+ 次
  • " 字面匹配
  • (?=\h*=) 积极向前看,在右边断言 = 叹息

Regex demo

替换为:

$1


要匹配从字符串开头到结尾的整个模式,您还可以使用 2 个捕获组并在替换中使用它们。

^"([^"]+)"(\h*=\h*"[^"]+")$

Regex demo

在替换中使用$1$2

【讨论】:

    【解决方案2】:

    你可以使用

    (?:\G(?!^)|^(?=.*=))[^"=\v]*\K"
    

    用空字符串替换。

    详情

    • (?:\G(?!^)|^(?=.*=)) - 上一个成功匹配的结束 (\G(?!^)) 或 (|) 包含 = 某处的行的开头 (^(?=.*=))
    • [^"=\v]* - 除"= 和垂直空格之外的任何零个或多个字符
    • \K - 省略匹配的文本
    • " - 一个 " 字符(匹配、消耗和删除)

    查看带有设置和演示的屏幕截图:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 2018-07-11
      • 2018-06-04
      • 2012-12-12
      • 2018-03-20
      • 1970-01-01
      相关资源
      最近更新 更多