【问题标题】:Replacing only first HTML tag on a page in RegEx仅替换 RegEx 中页面上的第一个 HTML 标记
【发布时间】:2015-07-09 21:35:38
【问题描述】:

我只想搜索第一次出现的 HTML 标记(及其内容)并将其替换为另一个。我希望在页面上找到第一次出现后停止搜索和替换。

例如,目录中每个页面的顶部是:

 <h3>This is my title</h3>

我想搜索 h3 标签并将其替换为 h1 标签,并使标签的内容保持不变。这样输出的结果就是:

 <h1>This is my title</h1>

“这是我的标题”部分在每个页面上都不同。我将在服务器上使用一个 Microsoft Server 程序(称为 fnr.exe),它可以进行搜索和替换,并且可以处理正则表达式。

我只希望这发生在我运行此查找和替换的每个文档的第一个实例上。

我试过了 查找:/h3>/g
替换:/h1>

那没有用。我不确定还能做什么。

这是我的 MS 程序的样子:

我还尝试使用另一个在 Windows 中似乎很流行的程序,称为 Notepad++。这是该尝试的屏幕截图。它取代了所有的事件。 (为了测试这个,我试图只找到第一个 h2 标签并将其替换为 h1。它替换了所有 h2 标签。

【问题讨论】:

  • 你有没有尝试过。我们是否应该假设您想使用 JavaScript?
  • 听起来你在说“我想用具有相同内容的

    标签替换页面上的第一个

    标签”。对吗?

  • 抱歉,我本来说我用的是MS,我以为会理解为微软。我已经编辑了问题以使其更清楚。

标签: html regex html-parsing


【解决方案1】:

我没有任何 MS 程序,因此您将不得不自己进行测试,但我认为这应该可以满足您的需求。

搜索

^([\s\S]*?)<h3>(.*?)</h3>

替换为

$1<h1>$2</h1>

正则表达式的演示和解释,https://regex101.com/r/tB6rV2/2

【讨论】:

  • 替换我在页面上的所有 h3 实例。我更新了问题,包括我的程序在 MS 中的外观截图。
  • 那是什么程序?
  • 它叫做 fnr.exe(查找和替换)
  • 虽然引擎似乎不支持 ^ 作为新字符串的开头(假设基于 20 秒的搜索)。您可以使用其他方法/引擎吗?
  • 谢谢!我会自己完成 20 秒的谷歌搜索,但我对此一无所知,以至于我不知道要搜索什么。我尝试使用另一个似乎在 Windows 中很流行的程序,称为 Notepad++。我在上面的编辑中放置了截图。我使用了您提供的代码(除了我使用 h2 而不是 h3),它替换了所有 h2 的实例,而不仅仅是第一个。
【解决方案2】:

你能不能只搜索/h3&gt;/g并替换为h1&gt;

【讨论】:

  • 我试过了,但没有用。搜索 /h3>/g 时没有“找到”任何内容
  • 这会将所有h3s 替换为h1s,而不仅仅是第一个。也不确定MS是否需要分隔符..
猜你喜欢
  • 1970-01-01
  • 2021-10-22
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
相关资源
最近更新 更多