需要帮助在 Perl 中创建一个简单的正则表达式
在创建正则表达式模式时我仍然没用。这一定非常容易。
给定字符串: /home/users/cheeseconqueso/perl.pl
我想将字符串 ./
放在最后一个 /
前面> 在原始字符串中生成: /home/users/cheeseconqueso/./perl.pl
提前致谢 - 我相信这个简单的例子将帮助我解决许多其他愚蠢的事情别在这儿!
I'm still useless when it comes to creating regex patterns. This one has got to be really easy.
Given the string: /home/users/cheeseconqueso/perl.pl
I want to place the string ./
right in front of the very last /
in the original string to produce: /home/users/cheeseconqueso/./perl.pl
Thanks in advance - I'm sure this simple example will help me for a lot of other stupid stuff that shouldn't be up here!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
这是我的解决方案,基于我对您的问题发表评论时的想法:
编辑:如果您真的热衷于使用正则表达式,这是我发现的最简单的解决方案:
它利用第一组中初始
*
的贪婪性来获取直到最后一个/
的每个字符,然后匹配第二组中的所有其他字符。使用|
分隔符更容易阅读,这样您就可以避免牙签倾斜综合症。Here's my solution based on what I was thinking of when I left the comment to your question:
Edit: If you're really keen on using a regex, this is the simplest one I've found:
It takes advantage of the greediness of the initial
*
in the first group to take every character up to the last/
, then matches everything else in the second group. It's a little easier to read with the|
delimiters so you avoid leaning toothpick syndrome.这是使用 File::Basename 而不是正则表达式,如果您发现很难编写正则表达式,您可以使用此 cpan 模块。
this is using File::Basename not with regex, you can use this cpan module if you find hard to write regex.
实际上,您不需要正则表达式,只需
分割
字符串即可:You actually don't need a regex, you can just
split
the string:正如 CanSpice 所指出的, split 在这里也可以很好地工作。
As noted by CanSpice, split works fine here too.
试试这个:
Try this:
正则表达式?我们不需要讨厌的正则表达式。
左值 substr() 来救援!
Regex? We don't need no stinkin' regex.
l-value substr() to the rescue!