如果重要的话,我正在使用Python / R来处理这个特定的脚本,但我认为这应该是一个普通的正则表达式问题。
我有
格式的东西"_id" : ObjectID("34z83b3853e820x583203"),
这在特定文件中发生了数百万次。我想将所有这些转换为
"_id" : "34z83b3853e820x583203",
问题是,我不能只用“替换任何”,因为文件中可能有其他实例。
更换ObjectID(“with”应该是微不足道的。
基本上,我必须找到混合了15个以上字符和数字的地方,紧接着是“),
找到后,我需要保留该字符串,然后删除)。
有什么好办法可以解决这个问题吗?找到一个表达并保留它的一部分?
我最初的印象是使用lookbehind
(?<=[a-zA-Z0-9]{15,}")\)
希望这会寻找a)由一串15个以上字母数字字符组成的字符串,但是
1)我不相信这意味着它必须是字母和数字,只是字母或数字或两者。
2)无论如何都没有抓住所需的括号。
答案 0 :(得分:0)
您可以同时执行这两个步骤(替换打开(
并关闭括号)
)
正则表达式:ObjectID\((\"[a-zA-Z0-9]{15,}\")\)
(\"[a-zA-Z0-9]{15,}\")
是第一个捕获组,包含引号和字母数字字符,其间的规则为15或更高,就像您提到的那样。由于这是第一个捕获组,因此由$1
ObjectID\(
是文字ObjectID
,后面是左括号\(
\)
是最后的结束括号替换为:$1
希望这有帮助!