正则表达式 - 替换附加到表达式的所有内容,但不替换表达式本身

时间:2017-05-10 16:52:08

标签: regex

如果重要的话,我正在使用Python / R来处理这个特定的脚本,但我认为这应该是一个普通的正则表达式问题。

我有

格式的东西
"_id" : ObjectID("34z83b3853e820x583203"),

这在特定文件中发生了数百万次。我想将所有这些转换为

"_id" : "34z83b3853e820x583203",

问题是,我不能只用“替换任何”,因为文件中可能有其他实例。

更换ObjectID(“with”应该是微不足道的。

基本上,我必须找到混合了15个以上字符和数字的地方,紧接着是“),

找到后,我需要保留该字符串,然后删除)。

有什么好办法可以解决这个问题吗?找到一个表达并保留它的一部分?

我最初的印象是使用lookbehind

(?<=[a-zA-Z0-9]{15,}")\)

希望这会寻找a)由一串15个以上字母数字字符组成的字符串,但是

1)我不相信这意味着它必须是字母和数字,只是字母或数字或两者。

2)无论如何都没有抓住所需的括号。

1 个答案:

答案 0 :(得分:0)

您可以同时执行这两个步骤(替换打开(并关闭括号)

正则表达式:ObjectID\((\"[a-zA-Z0-9]{15,}\")\)

  • (\"[a-zA-Z0-9]{15,}\")是第一个捕获组,包含引号和字母数字字符,其间的规则为15或更高,就像您提到的那样。由于这是第一个捕获组,因此由$1
  • 表示
  • ObjectID\(是文字ObjectID,后面是左括号\(
  • \)是最后的结束括号

替换为:$1

Regex101 Demo

希望这有帮助!