【问题标题】:regex - Removing text from around numbers in Notepad++regex - 从 Notepad++ 中的数字周围删除文本
【发布时间】:2013-05-25 05:43:36
【问题描述】:

我有一个大的数据子集,如下所示:

MyApp.Whatever\app.config(115): More stuff here, but possibly with numbers or parenthesis...

我想使用 Notepad++ 创建一个替换过滤器,它可以识别和替换行号“(115):”,并将其替换为一个制表符,后跟相同的数字。

我一直在尝试过滤器,例如 (\(\d+\):)(\(\[0-9]+\):),但它们一直在 \1 输出中返回整个值。

如何使用 Notepad++ 创建一个过滤器,该过滤器可以成功地将 (115): 替换为制表符 + 115

【问题讨论】:

    标签: regex replace notepad++


    【解决方案1】:

    使用量词.. (\(\d+?\):) 在哪里?将防止它变得贪婪。此外,由于所有内容都在 () 中,因此会将所有内容分组并将其视为 \1 ..

    如果是在 perl 中,我会说 \((\d+?)\): 应该只匹配内部部分。

    编辑:

    刚刚和我的同事谈过 - 他说s/\((\d+)\)/\t\1/,如果你需要在前面配置应用程序,你可以把它放在前面。

    【讨论】:

    • \d+\d+? 没有区别。
    • 是的意识到在.. 看正则表达式太久之后会削弱大脑
    • 我能理解。 :) 顺便说一句,我的评论不完整,两个正则表达式之间没有差异在这个问题。当然它们是不同的。 :)
    • @Rethic perl 是我用过的最有用的语言之一。每个程序员都应该学习 perl。
    【解决方案2】:

    这应该可以满足您的需求

    替换

    \((\d+)\):
    

    \t$1
    

    【讨论】:

      【解决方案3】:

      (\(\d+\):) 替换为\t\1 将保留括号和冒号,因为您已将它们包含在组中(外括号),我认为这就是您所说的“他们不断返回整个值”的意思。

      不要转义那些内括号,而是像其他答案所建议的那样转义外括号:\((\d+)\): - 这表示匹配左括号,然后匹配并捕获一组数字,然后匹配右括号和冒号.将其替换为 \t\1 将删除不在捕获组中的括号和冒号。

      【讨论】:

        猜你喜欢
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 2020-08-18
        • 2018-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多