正则表达式:选择并删除两点之间的所有线

正则表达式:选择并删除两点之间的所有线

<script type="application/ld+json">我想删除所有以 开头和结尾的行</script>

例如:

<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"Article",

"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://neculaifantanaru.com/en/qualities-of-a-leader.html"
},

"headline": "Stiri stiintifice si tehnologice ",
"keywords": "stiri, stiintifice, tehnologice ",
"description": "Trebuie sa ai multe calitati de lider",
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="author" content="Redacción">
<link rel="canonical" href="https://neculaifantanaru.com/en/qualities-of-a-leader.html",
"author": "admin",
"image": {
"@type": "ImageObject",
"url": "https://neculaifantanaru.com"
},

"datePublished": "2021-07-05T08:00:00+08:00",
   "dateModified": "2021-07-05T08:00:00+08:00",
   "author": {
    "@type": "Person",
    "name": "Neculai Fantanaru"
   },
}
</script>

我不知道为什么我的正则表达式不起作用。我制作了一个正则表达式模型,并用我的标签替换:

(?<=FROM HERE).*?(?=TO HERE)

因此,我的正则表达式变成:

寻找:(?<=<script type="application/ld+json">).*(?=</script>)

有没有人有更好的解决方案,或者可以用更好的版本更新我的正则表达式?

替换为:(leave empty)

答案1

您可以使用:

^<script type="application/ld\+json">.*?</script>$

变化:

  • 转义+-d+表示一个或多个d且不+匹配
  • 改为.*非贪婪,.*?以确保只匹配同一对标签之间的内容,以防有更多标签
  • 添加^以匹配行首和$行尾,因为您提到这是要求

您需要在启用“匹配换行符”选项的情况下运行它。

答案2

  • Ctrl+H
  • 找什么:FIRST-PART[\s\S]*?(SECOND-PART)[\s\S]*?
  • 用。。。来代替:LEAVE EMPTY
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • Replace all

因此,在这种情况下,正则表达式必须是:

<script type="application/ld\+json">[\s\S]*?(</script>)[\s\S]*?

答案3

短篇小说——添加反斜杠\+

(?<=<script type="application/ld\+json">).*(?=</script>)

您可能还想使用匹配的标签:

<script type="application/ld\+json">.*</script>

因此,您需要执行以下步骤:

  • Ctrl+H
  • 找什么:<script type="application/ld\+json">.*</script>
  • 用。。。来代替:NOTHING
  • 勾选环绕选项
  • 搜索模式:正则表达式
  • 勾选.匹配换行符选项
  • 点击Replace All(风险自负)

附加信息:

我确信您知道 - 以下字符在正则表达式中有特殊含义(例如+):

., +, *, ?, ^, $, (, ), [, ], {, }, |, \.

要匹配正则表达式中具有特殊含义的字符,您需要使用带有反斜杠的转义序列前缀(\)。RegEx\.匹配“。”;RegEx\+匹配“+”,RegEx\(匹配“(”。

您还需要使用正则表达式\\来匹配\(反斜杠)。

相关内容