2014-04-22 95 views
0

我做了一些搜索,发现了很多与Regex有关的多个替换问题,但我在EditPadPro中工作,因此需要一个能够与该环境的正则表达式语法一起使用的解决方案。希望有人有一些指导,因为我没有能够自己解决方案。EditPad:如何用多个值替换多个搜索条件?

其他免责声明:我吸取正则表达式。我的意思是......真的很糟糕。就像我几乎不知道跆拳道我正在做。所以说,这是我需要做的,以及我目前如何接近它...

我需要替换两个可能的值,以及其相应的替代品。我的两个搜索是:

(.*)-sm (.*)-rad

目前我单独运行这与简单的字符串替换每个:

sm rad

基本上我需要砍掉任何在此之前,来自“sm”,所以我只是检测到包括sm在内的所有东西,然后用该字符串替换它(同样也适用于“rad”)。

但似乎应该有一种方法在单个搜索/替换操作中执行此操作。我可以做搜索的部分罚款:

(.*)-sm|(.*)-rad

但再怎么替换每个与它的匹配值?这就是我卡住的地方。我想:

sm|rad

但很可惜,这只是变成被用于替换文字完整的字符串。

回答

1

搜索:

(.*)-(sm|rad) 

现在,当你把东西在正则表达式括号,这些比赛被存储在临时变量。因此无论匹配(。*)是否存储在\ 1中,并且匹配的任何内容(sm | rad)都存储在\ 2中。因此,你要用来替换:

\2 

请注意,根据您所使用的编程语言的替代变量可以是不同的。例如,在Perl中,我将不得不使用$ 2

+0

忽略我以前的评论,我现在正在编辑。感谢你,这很好! –

+0

我道歉,我误解了给出的答案的时间,这个实际上是给予第一,所以我正在授予它正确的答案。再次抱歉,有任何困惑! –

2

Jonathan,首先让我祝贺你在文本中使用EPP Pro for regex。这是我的主要文本编辑器,我选择它作为正则表达式爱好者的主要原因是它支持正则表达式语法远远优于竞争编辑器。例如,Notepad ++以其粗俗的正则表达式支持而闻名。理由当然是EPP的作者Jan Goyvaerts是传奇人物RegexBuddy的作者。

一张图片胜过千言万语......所以这里是我将如何做你的替代。只需点击“替换所有按钮”即可。正则表达式框中的表达式假定破折号之前不是空白字符的内容可以被剥离,所以如果这不是你想要的,我们需要调整它。

EPP regex screenshot

+0

此解决方案完美工作,并且自从首先给出该解决方案后,我会将其作为正确答案授予它。非常感谢! –

+0

我很抱歉,我误解了给出答案的时间,这个实际上给了第二个,所以我正在给第一个答复给出正确的答案。再次抱歉,有任何困惑! –

+0

@JonathanvanClute很高兴你能够得到它的工作。 :) – zx81