首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用regex交换两个单词

用regex交换两个单词
EN

Stack Overflow用户
提问于 2016-01-13 17:05:33
回答 2查看 186关注 0票数 1

假设我们想从

我有猫,猫和猫,她有狗,狗和狗。

我有狗,狗和狗,而她有猫,猫和猫。

当然,可以用多个regex来完成:

代码语言:javascript
复制
s/cat/monkey/g
s/dog/cat/g
s/monkey/dog/g

所以问题是它是否可以用one regex来完成。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-13 17:17:50

Perl解决方案

您可以使用替换定义哈希,并使用带有e修饰符的regex将反向引用传递给代码。

代码语言:javascript
复制
#!/usr/bin/perl
%data = ('cat', 'dog', 'dog', 'cat');
$x = "I have cat, cat and cat and she has dog, dog and dog.";
$x =~ s/\b(dog|cat)\b/$data{$1}/eg;
print $x;

IDEONE演示I have dog, dog and dog and she has cat, cat and cat.的输出

使用Notepad++的原始答案

如果计划使用Notepad++,可以使用带有条件替换模式的命名捕获组:

成本- \b(?<o1>dog)|(?<o2>cat)\b

替换为:(?{o1}cat:dog)

正则表达式将只匹配整个单词dogcat,并根据匹配的组使用适当的替换。

这可能是因为在Notepad++中使用Boost regex库。

票数 1
EN

Stack Overflow用户

发布于 2016-01-13 17:12:39

在.NET中,您将这样做:

代码语言:javascript
复制
var regex = new Regex(@"(cat|dog)");
var text = regex.Replace(template,
            match => match.Value=="cat"?"dog":"cat");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34772742

复制
相关文章

相似问题

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