のような基本的な正規表現を考えてみましょうa(.+?)a
。ファイル内のその正規表現のすべての出現を最初のグループのコンテンツに置き換えるにはどうすればよいでしょうか?
3 に答える
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
ているように、引数によって入力ファイルがバックアップ ファイルに移動され、標準出力が入力ファイルに送られるため、これが機能します。
Notepad++はバージョン>=6.0で使用できます。それ以来、PCRE正規表現をサポートしています。
その後、正規表現を使用して、次のようa(.+?)a
に置き換えることができます$1
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
、ファイルを変更します)。