【问题标题】:EditPad: How to replace multiple search criteria with multiple values?EditPad:如何用多个值替换多个搜索条件?
【发布时间】:2014-04-22 19:33:48
【问题描述】:

我进行了一些搜索,发现了大量关于使用 Regex 进行多次替换的问题,但我在 EditPadPro 中工作,因此需要一个适用于该环境的 regex 语法的解决方案。希望有人能指点一下,因为我自己无法解决问题。

附加免责声明:我很喜欢正则表达式。我的意思是真的......这很糟糕。就像我几乎不知道我在做什么一样。话虽如此,这就是我需要做的事情以及我目前的处理方式......

我需要用它们对应的替换替换两个可能的值。我的两个搜索是:

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

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

sm rad

基本上,我需要删除“sm”之前的所有内容,因此我只检测到包括 sm 在内的所有内容,然后将其全部替换为该字符串(对于“rad”也是如此)。

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

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

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

sm|rad

但是可惜,这只是成为用于替换的完整字面字符串。

【问题讨论】:

    标签: regex replace editpad


    【解决方案1】:

    Jonathan,首先让我祝贺您在文本中使用 EPP Pro 进行正则表达式。它是我的主要文本编辑器,作为一个正则表达式爱好者,我选择它的主要原因是它对正则表达式语法的支持远远优于竞争对手的编辑器。例如,Notepad++ 以其对正则表达式的粗制滥造而闻名。原因当然是 EPP 的作者 Jan Goyvaerts 是传奇 RegexBuddy 的作者。

    一张图片胜过一千个字……所以我将如何替换你。只需点击“全部替换”按钮。正则表达式框中的表达式假定破折号之前的任何非空白字符都可以被删除,因此如果这不是您想要的,我们需要对其进行调整。

    【讨论】:

    • 这个解决方案完美运行,因为它是第一个给出的,我将它作为正确答案奖励。非常感谢!
    • 我很抱歉,我误读了给出答案的时间,这个实际上是第二个,所以我将正确答案授予第一个响应。再次为任何混淆感到抱歉!
    【解决方案2】:

    搜索:

    (.*)-(sm|rad)
    

    现在,当您在正则表达式中放入括号时,这些匹配项将存储在临时变量中。所以匹配的 (.*) 存储在 \1 中,匹配的 (sm|rad) 存储在 \2 中。因此,您要替换为:

    \2
    

    请注意,替换变量可能因您使用的编程语言而异。例如,在 Perl 中,我必须改用 $2

    【讨论】:

    • 忽略我之前的评论,我现在正在编辑。谢谢你,效果很好!
    • 抱歉,我看错了给出答案的时间,这个实际上是第一个给出的,所以我授予它正确的答案。再次为任何混淆感到抱歉!
    猜你喜欢
    • 2021-08-17
    • 2019-06-14
    • 2010-10-06
    • 2021-10-18
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多