【问题标题】:Find and replace and modify string using regular expressions in Notepad++在 Notepad++ 中使用正则表达式查找、替换和修改字符串
【发布时间】:2014-06-26 10:42:33
【问题描述】:

我很确定我需要在 Notepad++(或类似的)中使用正则表达式来批量更新包含需要稍微修改的 URL 的网页列表。我遇到的问题是我有几百个页面包含这种 URL 格式:

http://www.test.co.uk/folder1/folder2/pagename.html

.. 这个结构现在需要改为:

http://www.test.co.uk/folder1/folder2/pagename/index.html

.. 所以 URL 的主要部分保持不变,但“页面名”只需要丢失 .html 部分,现在应该由“/index.html”继续 - 换句话说,“页面名”变为完整 URL 的另一个子文件夹。

我确信必须有一种方法可以使用 Reg Exp 在 Notepad++ 中使用“在文件中查找..”来保留大部分 URL 字符串,并且还需要执行删除“页面名”的 .html 部分和然后附加 '/index.html' - 如果有任何帮助,我将不胜感激。提前致谢!丹尼斯。

【问题讨论】:

  • 你真的不需要正则表达式来做到这一点。你不能使用简单的查找/替换吗?
  • 文件夹级别总是存在还是有所不同?
  • 根据您的文件内容,不需要正则表达式,您可以将.html 替换为/index.html。这种方法的唯一问题是您的文件是否包含您不想匹配的.htmls(在这种情况下,应该需要正则表达式)。
  • 感谢 acdcjunior - 你提到了我在 HTML 中的其他 URL 遇到的问题 - 我忘了把它放在我原来的问题中!我在对第一个答案的评论中进一步扩展了。干杯。

标签: regex replace notepad++


【解决方案1】:

如果您希望这影响所有网址,您可以不使用正则表达式:

查找

.html

替换为:

/index.html

如果您希望这仅影响包含folder1/folder2 的网址,您可以使用正则表达式:

查找

folder1/folder2/(.*)\.html

替换为:

folder1/folder2/\1/index.html

【讨论】:

  • 如果这样可行,那么您甚至可以将 .html 替换为 /
  • 感谢您的帮助。我刚刚意识到我的原始问题中没有包含一些重要信息。页面 HTML 中还有其他 URL 需要保持不变(因此被查找/替换忽略),但在代码中有 URL,如我的示例所示,共同因素是“文件夹 1/文件夹 2”部分。因此,应该只找到带有这个的 URL,然后为新结构更新 URL。希望这更有意义。
  • 非常感谢 arserbin3 - 这正是我所需要的!我将 \1 更改为 $1 因为我的 Notepad++ 版本似乎需要该符号。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2015-01-11
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多