EditPad:如何用多个值替换多个搜索条件?

时间:2014-04-22 19:33:49

标签: regex replace editpad

我做了一些搜索,发现了很多关于使用Regex进行多次替换的问题,但是我在EditPadPro中工作,因此需要一个与该环境的正则表达式语法一致的解决方案。希望有人有一些指示,因为我无法自己解决问题。

附加免责声明:我吮吸正则表达式。我的意思是真的......这很糟糕。就像我几乎不知道wtf我在做什么。所以说,这就是我需要做的以及我现在正在接近它......

我需要替换两个可能的值,并使用相应的替换值。我的两个搜索是:

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

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

sm rad

基本上我需要丢掉“sm”之前的任何内容,所以我只是检测到包括sm在内的所有内容,然后将其全部替换为该字符串(同样替换为“rad”)。

但似乎应该有一种方法可以在单个搜索/替换操作中执行此操作。我可以通过以下方式完成搜索部分:

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

但是如何用它的匹配值替换每个?那就是我被困住的地方。我试过了:

sm|rad

但是,唉,这只是用于替换的文字完整字符串。

2 个答案:

答案 0 :(得分:2)

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

一张图片胜过千言万语......所以这就是我如何替换你的。只需按下"替换所有按钮"。正则表达式框中的表达式假定破折号之前的任何不是空格字符的内容都可以被剥离,所以如果这不是你想要的,我们需要调整它。

EPP regex screenshot

答案 1 :(得分:1)

搜索:

(.*)-(sm|rad)

现在,当你在Regex中的括号中添加一些东西时,这些匹配存储在临时变量中。因此,无论匹配(。*)存储在 \ 1 中,匹配的任何内容(sm | rad)都存储在 \ 2 中。因此,您想要替换为:

\2

请注意,替换变量可能会有所不同,具体取决于您使用的编程语言。例如,在Perl中,我必须使用 $ 2