【发布时间】:2021-01-15 16:27:41
【问题描述】:
我有一个文件,其文本如下:
“标题”=“正文”
我想删除 = 之前的两个 ",保持这样的状态:
标题 = “正文”
到目前为止,我设法选择了第一块文本:
.+(=)
这会选择直到 = 的所有内容,但我找不到如何重新替换(或删除)两者 " 。
有什么建议吗?
【问题讨论】:
-
尝试
(?:\G(?!^)|^(?=.*=))[^"=\v]*\K"并替换为空字符串。
我有一个文件,其文本如下:
“标题”=“正文”
我想删除 = 之前的两个 ",保持这样的状态:
标题 = “正文”
到目前为止,我设法选择了第一块文本:
.+(=)
这会选择直到 = 的所有内容,但我找不到如何重新替换(或删除)两者 " 。
有什么建议吗?
【问题讨论】:
(?:\G(?!^)|^(?=.*=))[^"=\v]*\K" 并替换为空字符串。
您可以在替换中使用捕获组,并匹配要删除的双引号,同时在右侧断言等号。
查找内容:
"([^"]+)"(?=\h*=)
" 字面匹配([^"]+) 捕获组 1,匹配除 " 之外的任何字符 1+ 次
" 字面匹配(?=\h*=) 积极向前看,在右边断言 = 叹息替换为:
$1
要匹配从字符串开头到结尾的整个模式,您还可以使用 2 个捕获组并在替换中使用它们。
^"([^"]+)"(\h*=\h*"[^"]+")$
在替换中使用$1$2
【讨论】: