Notepad ++替换整个字符串,但其中的整数除外

时间:2018-10-13 07:44:57

标签: sql sql-server regex

我在 Notpad ++ 中有一个字符串。

  

CAST(1 AS NUMERIC(18,0)),

我要删除其中除1外的所有字符串。

  

1将是任何整数。

我需要一个正则表达式来替换它。

每一种帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:1)

类似这样的东西

CAST\(([0-9]+).+$

并替换为

\1

将仅保留捕获组的内容,(..)是一个捕获组,它将其中的内容放入{n}中,其中{n}是捕获组编号。在这种情况下,我们只有1个,因此替换为\ 1。而且我们的捕获组是连续09次(如下所述)

For example

  • CAST\(从字面上匹配CAST(
  • ([0-9]+)捕获(...) 0-9(+一个或多个),您也可以(\d+)
  • .+$行的$末尾有一个或多个。

如果此行上还有其他文字,例如

 CAST(1 AS NUMERIC(18, 0)), Some other Text

您必须使用比.+$更具体的内容,例如

 CAST\((\d+) AS NUMERIC\(\d+,\s*\d+\)\),

除了说明的最后一行外,与上述相同:

  • .+$行的$末尾有一个或多个。

会是这样

  • AS NUMERIC\(AS NUMERIC(
  • \d+任何整数
  • ,字面上的逗号
  • \s*空白*无或更多。
  • 再次
  • \d+
  • \)\),)),从字面上看。

您必须逃脱(),因为它们知道它们不是捕获组。

Example

在这种情况下的结果将是

1 some other text

在第一个示例中,它也将删除some other text,我不知道是否存在多余的文本,因此我仅出于完整性的考虑。

当您第一次开始使用正则表达式时,可能会感到非常困惑,但是它们非常强大。值得花时间至少学习基础知识,因为您可以使用它们做很多事情。

您的Notepad ++替换对话框应如下所示:

enter image description here

然后按全部替换

感谢@Caius Jard提供的屏幕截图。

希望有帮助!