添加文本的正则表达式替换
我正在尝试在我的移动应用程序(用 ruby 编写)中进行链接重写。我希望它能够使用一个正则表达式完成这两个重写:
m.example.com -> www.example.com
m.subd.example.com -> subd.example.com
我
m\.([a-z\.]*)example\.com
用这个替换最接近的:
$1example.com
这适用于 m.subd.example.com,但不适用于 m.example。 com 因为我的“www”。例外。
我经常这样做,所以我希望它能够非常快,这就是为什么我试图避免使用任何代码,而只是使用一个正则表达式。是否可以?正则表达式有什么我不知道的奇特功能吗?
I'm trying to do link rewriting in my mobile application (written in ruby). I would like it to be able to accomplish both of these rewrites with a single regular expression:
m.example.com -> www.example.com
m.subd.example.com -> subd.example.com
The closest I've gotten replacing this:
m\.([a-z\.]*)example\.com
with this:
$1example.com
This works for the m.subd.example.com but it fails for m.example.com because of my "www." exception.
I do this A LOT so i'd like it to be very fast, which is why I am trying to avoid using any code, just a single regex. Is it possible? Is there a fancy feature of regex that I don't know about?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正则表达式就是代码。更复杂的正则表达式需要更长的时间来运行。您需要编写一些代码或运行两个正则表达式。
Regex is code. A more complex regex takes longer to run. You'll need to write some code or run two regexes.
我不了解 Ruby,但这里有一个 Perl 脚本,可以完成您给出的示例的工作。或许可以翻译一下。
输出:
I don't know Ruby, but here is a Perl script that does the job for the examples you've given. May be it could be translated.
output: