【问题标题】:Regex in Notepad++记事本++中的正则表达式
【发布时间】:2010-04-13 18:52:40
【问题描述】:

任何人都可以为以下搜索和替换(转换)提供记事本++的正则表达式

ADD  ( PRIMARY KEY (xxx) ) ;

ADD  PRIMARY KEY (xxx) ;

基本上,删除了主键表达式周围的 ()。不同语句中的 xxx 值不同。

如果不是notepad++,我也可以试试vim 或任何shell 脚本的正则表达式。

非常感谢。 巴布。

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    搜索:

    ADD  \( PRIMARY KEY \((.+)\) \) ;
    

    替换为:

    ADD  PRIMARY KEY (\1) ;
    

    【讨论】:

    • 非常感谢.. 稍作改动后效果很好.. 要搜索的模式是 ADD \( PRIMARY KEY \((.+)\) \) ;我相信你知道得更好,但我仍然没有在他们的手册中看到“d”的用法(notepad-plus.sourceforge.net/uk/regExpList.php)。再次感谢您的帮助。
    【解决方案2】:

    在 perl 中假设你将这一行读入 $line

    $line =~ s/([^(]+)\((.*)\)/$1$2/
    

    会做这项工作。这也使您免于剪切粘贴 ADD PRIMARY KEY ...(具有正确数量的空格。正则表达式在这里所做的是

    a) 将所有内容匹配到第一个(并将其捕获到 $1

    b) 匹配 (

    c) 匹配所有字符直到但不包括最后的 ) 并将其捕获到 $2 中。

    d) 匹配尾随 )

    e) 将原始字符串替换为 $1$2。

    【讨论】:

      【解决方案3】:

      试试这个,虽然 x 是 xxx 的最后一个单词,你也可以把它改成点

      搜索什么:\s\s\K\(|x\) \K\)
      替换为:nothing

      如果没有成功, 请分享您的完整字符串示例
      以及想要的输出......

      【讨论】:

        【解决方案4】:

        您不需要正则表达式。搜索 '( ' 并替换为空格。然后搜索 ') ' 并替换为空。

        '([space]'')[space]'

        【讨论】:

        • 是 '([space]' 和 ')[space]'
        • 感谢您的快速回复...对不起,我没有提及..还有其他包含 (, ) 等的文本,我不想打扰..
        • @bsreekanth 那么正则表达式可能不会帮助你。正则表达式不理解嵌套。它不能说左括号和右括号属于一起。
        猜你喜欢
        • 2018-11-17
        • 1970-01-01
        • 2016-05-18
        • 2014-05-03
        • 2023-03-05
        • 2013-03-19
        • 1970-01-01
        相关资源
        最近更新 更多