如何将正则表达式模式匹配转换为小写以进行 URL 标准化/整理
我目前正在尝试将网站上的所有链接、文件和标签从 UPPERCASE.ext
和 CamelCase.ext
转换为 lowercase.ext
。
我可以使用 href="[^"]*"
和 src="[^"]*"
的正则表达式匹配来匹配页面中的链接 这似乎可以很好地识别 HTML 中的链接和图像。
然而,我需要做的是获取匹配并在匹配上运行 ToLowercase()
函数。由于我有很多想要解析的页面,因此我希望制作一个简短的 shell 脚本,该脚本将在指定的目录上运行,并且模式与指定的正则表达式匹配,并对它们执行小写操作。
I am currently trying to convert all links and files and tags on my site from UPPERCASE.ext
and CamelCase.ext
to lowercase.ext
.
I can match the links in pages using a regular expression match for href="[^"]*"
and src="[^"]*"
This seems to work fine for identifying the link and images in the HTML.
However what I need to do with this is to take the match and run a ToLowercase()
function on the matches. Since I have a lot of pages that I'd like to parse through, I'm looking to make a short shell script that will run on a specified directory and pattern match the specified regexes and perform a lowercase operation on them.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Perl 单行将所有常规文件重命名为小写:
如果您想更具体地了解重命名哪些文件,您可以将
-f
更改为正则表达式或其他内容:编辑:抱歉,在重读问题后我发现您还想替换文件中的出现次数:
编辑 2:尝试这个,因为
find
命令使用+
而不是\;
这是更有效的,因为多个文件一次传递到 perl(感谢另一篇文章中的@ikegami)。它还处理 URL 周围的'
和"
。最后,它使用{}
而不是//
用于替换,因为您正在替换 URL(也许 URL 中的/
会混淆 Perl 或您的 shell?),这应该不重要,我在我的系统上尝试了两者,效果相同(两者都工作得很好),但值得一试:PS:我还有一台 Macbook,并使用 bash shell 和 Perl 版本 5.8.9 和 5.10.0 对其进行了测试。
Perl one-liner to rename all regular files to lowercase:
If you want to be more specific about what files are renamed you could change
-f
to a regex or something:EDIT: Sorry, after rereading the question I see you also want to replace occurrences within files as well:
EDIT 2: Try this one as the
find
command uses+
instead of\;
which is more efficient since multiple files are passed to perl at once (thanks to @ikegami from another post). It also It also handles both'
and"
around the URL. Finally, it uses{}
instead of//
for substitutions since you are substituting URLs (maybe the/
s in the URL are confusing perl or your shell?). It shouldn't matter, and I tried both on my system with the same effect (both worked fine), but it's worth a shot:PS: I also have a Macbook and tested these using bash shell with Perl versions 5.8.9 and 5.10.0.
使用 bash,您可以声明一个变量仅保存小写值:
或者,您可以将一个值转换为小写(我认为是 bash 版本 4)
With bash, you can declare a variable to only hold lower case values:
Or, you can convert a value to lowercase (bash version 4, I think)
你想要这个吗?
或者
使用您自己的正则表达式:
you want this?
or this
with your own regex:
您可以将
sed
与-i
一起使用(就地编辑):You could use
sed
with-i
(in-place edit):