Regex 如何替换记事本++;正则表达式?

Regex 如何替换记事本++;正则表达式?,regex,notepad++,Regex,Notepad++,我有SQL insert语句。其中一个值是我需要替换的日期 Insert into table (column_a, column_b) values ('test',to_date('01/DEC/15','DD/MON/RR')); 我有超过1000条Insert SQL语句,如上所述 我想替换列b的值,该列的格式为“to_date('01/DEC/15','DD/MON/RR')”date可以在函数中更改。我想用所有行的“SYSDATE”替换列b值 我试着跟踪什么都没用 ^[to_dat

我有SQL insert语句。其中一个值是我需要替换的日期

Insert into table (column_a, column_b) values ('test',to_date('01/DEC/15','DD/MON/RR'));
我有超过1000条Insert SQL语句,如上所述

我想替换列b的值,该列的格式为“to_date('01/DEC/15','DD/MON/RR')”date可以在函数中更改。我想用所有行的“SYSDATE”替换列b值

我试着跟踪什么都没用

^[to_date].*

/to_date([a-zA-Z0-9/,'])+/

/^to_date(.*$/
有人能帮忙吗?

在表格(a列,b列)中插入值(“测试”,截止日期('15年12月1日','DD/MON/RR'); 迄今为止('

如果to_date函数的语法始终正确,这将满足您的要求:

to_date\([^)]+\)
此正则表达式的含义:

  • 截止日期
    ← 找到这个文本字符串
  • \(
    ← 后跟一个开括号。反斜杠是一个“转义字符”。您需要“转义括号”,因为括号是正则表达式中用于定义组的特殊字符
  • [^)]
    ← 后跟除右括号外的任何字符中的一个或多个。括号表示字符集
    []
    。前导插入符号
    ^
    否定字符集(“不是此集”)
  • \)
    ← 后跟一个右括号。同样,由于这是文字括号,而不是正则表达式组的右括号,因此必须对字符进行转义
回答

to_date\(.+?\)
这和

  • 截止日期(
  • +?
    -任何字符中一个或多个字符的匹配项
  • 文字

这就是你错的地方

  • 任何使用
    ^
    -这是“字符串开始”锚点。因为您要查找的字符串从不出现在开头,所以它永远不会匹配
  • [截止日期].
    -这是一个字符类,与内部零个或多个字符匹配,即“t”、“o”、“d”、“a”或“e”
  • 到目前为止([a-zA-Z0-9/,'])+
    -这里的括号没有转义,因此它们不是匹配文字
    ,而是为里面的字符类形成一个捕获组。由于您遗漏了文字括号,这将永远不会匹配
  • 截止日期(.*$
    -这是一个无效的表达式,因为您缺少捕获组的结束日期

    • 在我看来,在这种情况下,最简单的正则表达式是:

      to_date.{25}
      
      此表达式表示文字字符串“to_date”,后面有25个字符


      它会起作用的。

      谢谢@Phil它起作用了