2

のような基本的な正規表現を考えてみましょうa(.+?)a。ファイル内のその正規表現のすべての出現を最初のグループのコンテンツに置き換えるにはどうすればよいでしょうか?

4

3 に答える 3

5

reモジュールを使用して Python で正規表現を使用し、モジュールを使用fileinputしてファイル内のテキストをその場で置き換えることができます。


例:

import fileinput
import re

fn = "test.txt" # your filename

r = re.compile('a(.+?)a')
for line in fileinput.input(fn, inplace=True):
  match = r.match(line)
  print match.group() if match else line.replace('\n', '')

前:

こんにちは、これは
aShouldBeAMatch!!!!!
そして、これはあなたが知っている はずです

後:

こんにちはこれは
aShouldBeAMa
you know


注:オプションのインプレース フィルタリング で説明されinplace=Trueているように、引数によって入力ファイルがバックアップ ファイルに移動され、標準出力が入力ファイルに送られるため、これが機能します。

于 2012-08-10T08:46:20.593 に答える
0

Notepad++はバージョン>=6.0で使用できます。それ以来、PCRE正規表現をサポートしています。

その後、正規表現を使用して、次のようa(.+?)aに置き換えることができます$1

于 2012-08-10T08:50:48.313 に答える
-2

sed

Pythonツールの使用に制限されていますか?sedとてもうまくいくからです。

$ sed -i <filename> "s/a(.+?)a/\1/g"

Vim

Vimウィンドウで、次のsearch-and-replaceexコマンドを実行します。

:%s/\va(.+?)a/\1/g

多くの正規表現文字はVimset\vの「非常に魔法の」モードでエスケープされることに注意してください。これにより、エスケープする必要がなくなります。「魔法」(デフォルト)と同じコマンドは:%s/a\(.\+\?)a/\1/g

Python

Pythonでこれを実行しようとしている場合、BigYellowCactusの答えは優れています(re正規表現用のモジュールを使用しfileinput、ファイルを変更します)。

于 2012-08-10T08:38:50.673 に答える