html - 如何在Notepad++中使用regex(正则表达式)删除所有不包含特定字符串的HTML和JSON代码?

标签 html json regex notepad++

使用正则表达式(在 Notepad++ 中),我想查找包含字符串 foo 的所有 JSON 部分。请注意,JSON 恰好嵌入到加载到 Notepad++ 中的一组有限的 HTML 源代码中。

我编写了以下正则表达式来完成此任务:

({[^}]*foo[^}]*})

这在所有可能的输入中都按预期工作。

我想改进我的工作流程,因此我想编写一个正则表达式来删除所有不的 HTML 和 JSON,而不是仅仅查找所有此类 JSON 部分匹配这个表达式。结果将仅是包含 foo 的 JSON 部分。

我尝试使用 Notepad++ 正则表达式 Replace 功能与此 find 表达式:

(?:({[^}]*?foo[^}]*?})|.)+

以及这个替换表达式:

$1\n\n$2\n\n$3\n\n$4\n\n$5\n\n$6\n\n$7\n\n$8\n\n$9\n\n

这成功地解决了 JSON 中最后一次出现的 foo 的情况,但找不到其余的出现情况。

如何改进我的代码以查找所有出现的情况?

这是输入和所需输出的简化最小示例。我希望我没有将其简化太多以使其有用:

简化输入:

<!DOCTYPE html>
  <html>
    <div dat="{example foo1}"> </div>
    <div dat="{example bar}"> </div>
    <div dat="{example foo2}"> </div>
  </html>

所需输出:

{example foo1}

{example foo2}

最佳答案

你可以使用

{[^}]*foo[^}]*}|((?s:.))

替换为(?1:$0\n)详细信息:

  • {[^}]*foo[^}]*} - {,除 } 之外的零个或多个字符,foo,除 } 之外的零个或多个字符,然后是 }
  • | - 或
  • ((?s:.)) - 捕获组 1:任意一个字符 ((?s:...) 是一个内联修饰符组,其中 . 匹配所有字符,包括换行符,与启用 . 匹配换行符 选项相同)。

如果第 1 组匹配,(?1:$0\n) 替换模式将替换为空字符串,否则替换为匹配文本 + 换行符。

查看演示以及搜索和替换对话框设置:

enter image description here

关于html - 如何在Notepad++中使用regex(正则表达式)删除所有不包含特定字符串的HTML和JSON代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69331382/

相关文章:

javascript - 从 Web 应用程序打开 SMS 编辑器

html - 新的 HTML5 Canvas API 支持

android - 如何使用音频文件 ID 获取 soundcloud 音频下载 url

java - 你应该在同一个对象中使用@NotNull 和@JsonProperty(required)

json - 在 Golang 中解码 json

java - 正则表达式匹配至少包含一位数字和一个特定长度的数字的字符串

asp.net - 防止使用邮政信箱地址的最佳策略?

python - 如何使用 Python 保存 "complete webpage"而不仅仅是基本的 html

JavaScript RegExp 方法 exec() 只返回一项

html - 如何隐藏文件链接的 URL?