2017-05-10 1 views
1

Python/Rでこのスクリプトを使用していますが、これは一般的な正規表現の質問であるべきです。Regex - 式に添付されているすべてのものを置き換えますが、式自体は置換しません。

私は、これは特定のファイルに数百万回起こる

"_id" : ObjectID("34z83b3853e820x583203"), 

のフォーマットに沿って何かを持っています。私は、キャッチは、ファイル内の他のインスタンスがあるかもしれないと私は、「で、)」いずれかを置き換えることはできません、ある

"_id" : "34z83b3853e820x583203", 

にこれらのすべてを変換したいです。オブジェクトIDを交換

見つかったら、

を(些細でなければなりません「と」。

だから、基本的に、私はすぐに「に続く混合15+文字や数字が、あるところ見つけなければならない)、私が必要)その文字列を保存し、ちょうど削除する。

私は?行方不明の式を見つけると、それの部分を維持しています、この約行くには良い方法はありますか?

私の最初の印象は、使用していましたlookbehind

(?<=[a-zA-Z0-9]{15,}")\) 
では、これはちょうど、私はこれはそれがアルファと数値であることを有することを意味するとは考えていない

1)ただし、15+英数字の文字列によって進行すること)のためになりますことを期待している

アルファまたは数字またはその両方。

2)それに関係なく、目的の括弧をキャッチしていません。

+0

"_id"を変換しますか:ObjectID( "34z83b3853e820x583203")、 "これに" "_id": "34z83b3853e820x583203"、 " –

答えて

0

あなたは(開口部(と閉じ括弧)を置き換える)一緒に両方のステップを行うことができます

正規表現:ObjectID\((\"[a-zA-Z0-9]{15,}\")\)

  • (\"[a-zA-Z0-9]{15,}\")は、最初のキャプチャグループであるとしていた間、引用符や文字の英数字を含みあなたが言及したように15以上のルール。 $1

    :これは$1
  • ObjectID\(で表される第一のキャプチャグループであるためである開口続くリテラルObjectID\(
  • \)エンド

で閉鎖括弧を用いて交換され括弧します

Regex101 Demo

これが役に立ちます。