notepad ++使用正则表达式删除两个字符串之间的文本

时间:2018-04-17 07:16:03

标签: regex notepad++

我想在记事本++ 中使用regular expression删除两个字符串之间的文字。这是我的完整字符串

[insertedOn]) VALUES (1, N'1F9ACCD2-3B60-49CF-830B-42B4C99F6072',

我想要这样的最终字符串

[insertedOn]) VALUES (N'1F9ACCD2-3B60-49CF-830B-42B4C99F6072',

我从字符串中删除了 1, 1,2,3 按递增顺序排列。

我尝试了许多表达但没有奏效。其中一个是(VALUES ()(?s)(.*)(, N')

如何删除此内容?

2 个答案:

答案 0 :(得分:1)

您应首先在(之前逃避文字VALUES\(

通过这样做,除了.*(DOTALL)标志之外,正则表达式中的s会导致引擎贪婪地匹配到输入字符串的结尾,然后回溯到第一次出现{{1这意味着意外的匹配。

为了改善你的正则表达式,你应该1)不明智地, N' 2)删除.* 3)逃避(?s)

(

为了更准确地匹配,您最好搜索:

(VALUES \().*?, (N')

并替换为零。

故障:

  • VALUES \(\K\d+, *(?=N') 三月VALUES \(字面意思
  • VALUES (重置匹配
  • \K匹配逗号和可选空格前面的数字
  • \d+, *后跟(?=N')

答案 1 :(得分:1)

您可以使用

(VALUES \().*?,\s*(N')

并替换为$1$2。请注意,如果要删除的字符串部分可以包含换行符,请启用 .匹配换行符。如果仅在ALLCAPS中必须匹配NVALUES,请确保选中匹配大小写选项。

模式详情

  • (VALUES \() - 第1组(后来用替换模式中的$1引用):文字子串VALUES (
  • .*? - 任意0个字符,尽可能少,直到后续子图案的最左边出现
  • ,\s* - 逗号和0+空格(使用\h代替\s仅匹配水平空格字符)
  • (N') - 第2组(后来用替换模式中的$2引用):文字子字符串N'

enter image description here