首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >perl正则表达式仅替换部分字符串

perl正则表达式仅替换部分字符串
EN

Stack Overflow用户
提问于 2013-02-08 20:31:42
回答 5查看 1.4K关注 0票数 1

我需要编写一个perl正则表达式来转换

代码语言:javascript
运行
复制
site.company.com => dc=site,dc=company,dc=com

不幸的是,我无法使用下面附带的正则表达式删除尾随的",“。当然,我可以删除下一条语句中的尾随",“,但我更希望将其作为regex的一部分来处理。

代码语言:javascript
运行
复制
$data="site.company.com";
$data =~ s/([^.]+)\.?/dc=$1,/g;
print $data;

上面的代码打印如下:

代码语言:javascript
运行
复制
dc=site,dc=company,dc=com,

提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-08 20:42:04

代码语言:javascript
运行
复制
$data =~s/\./,dc=/g&&s/^/dc=/g;

测试如下:

代码语言:javascript
运行
复制
> echo "site.company.com" | perl -pe 's/\./,dc=/g&&s/^/dc=/g'
dc=site,dc=company,dc=com
票数 2
EN

Stack Overflow用户

发布于 2013-02-08 20:45:48

在处理urls时,使用诸如URI之类的模块可能是个好主意。然而,我不认为它适用于这种情况。

我认为,这项任务最容易通过拆分和连接来解决:

代码语言:javascript
运行
复制
my $url = "site.company.com";
my $string = join ",",            # join the parts with comma
             map "dc=$_",         # add the dc= to each part
             split /\./, $url;    # split into parts
票数 4
EN

Stack Overflow用户

发布于 2013-02-08 20:47:31

试着这样做:

代码语言:javascript
运行
复制
my $x = "site.company.com";
my @a = split /\./, $x;
map { s/^/dc=/; } @a;
print join",", @a;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14772668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档