【发布时间】:2016-10-29 14:49:54
【问题描述】:
我是 Perl 和正则表达式的新手,需要您的专业知识。
我需要处理包含 Foo Bar1.jpg 等占位符行的文本文件,并将其替换为相应的 URL,例如 https:/baz/qux/Foo_Bar1.jpg。
您可能已经猜到了,我正在使用 HTML。占位符文本指的是文件名,这是编写文档时唯一可用的内容。这就是为什么我必须使用占位符文本。最后,当然,我想用 URL 替换文件名(在我将文件上传到我的 CMS 以获取 URL 之后)。那时,我手头有所有信息——文件名和 URL。当然,我可以将 URL 粘贴到 HTML 文档中的占位符名称上。事实上,我已经做到了。但我确信有更好的方法。
简而言之,我有这样的占位符行:
Foo Bar1.jpg
Foo Bar2.jpg
Foo Bar3.jpg
我也有这样的 URL 行:
https:/baz/qux/Foo_Bar1.jpg
https:/baz/qux/Foo_Bar2.jpg
https:/baz/qux/Foo_Bar3.jpg
我想找到占位符字符串并使用正则表达式捕获像 Bar1 这样的区分符。然后我想使用像Bar1这样的捕获部分来执行另一个匹配相应URL字符串部分的正则表达式搜索,即https:/baz/qux/Foo_Bar1.jpg。匹配成功后,我想用https:/baz/qux/Foo_Bar1.jpg 替换Foo Bar1.jpg 行。
最终,我想对每个排列都这样做,以便 https:/baz/qux/Foo_Bar2.jpg 也替换 Foo Bar2.jpg 等等。
我已经编写了匹配占位符和 URL 的正则表达式。据我所知,这不是我的问题。我可以找到我需要处理的字符串。例如,/[a-z]+\s([a-z0-9]+)\.jpg/ 成功匹配了我所称的占位符文本并捕获了我所称的区分符。
但是,尽管过去一周我花了很多时间阅读 Stack Overflow、其他各种网站和 O'Reilly 关于 Pearl 和 Pearl 正则表达式的书籍,但我无法思考如何处理我能找到什么。
【问题讨论】:
-
您是否看过 Perl 的模板模块 (template-toolkit.org) 而不是自己发明的?