0

@ Python 3正規表現で言及されているものを含むさまざまな正規表現を試して 、以下に示す入力ファイルと一致する複数行のコメントを見つけました。完全なコードも以下にあります。以下は、入力ファイル@ http://pastie. org/5653293

pattern = re.compile(r'/\*.*?'+ needle + '.*?\*/', re.DOTALL)

正規表現が一致しない理由について誰かが入力を提供できますか?

import os
import sys
import re
import fnmatch

def find_and_remove(haystack, needle):
    re.escape(needle)
    pattern = re.compile(r'/\*.*?'+ needle + '.*?\*/', re.DOTALL)
    return re.sub(pattern, "", haystack)

for path,dirs,files in os.walk(sys.argv[1]):
    for fname in files:
        for pat in ['*.cpp','*.c','*.h','*.txt']:
            if fnmatch.fnmatch(fname,pat):
                fullname = os.path.join(path,fname)
                # put all the text into f and read and replace...
                f = open(fullname).read()
                result = find_and_remove(f, r"Copyright (c) 2012, The Linux Foundation. All rights reserved")

入力:- http://pastie.org/5653293

4

1 に答える 1

1

「Copyright \(c\) 2012, The Linux Foundation.All rights reserved」を使用してください。正規表現では既に意味 (キャプチャ) があるため、括弧をエスケープする必要があります。

正規表現をエスケープする方法の詳細を検索してください。

于 2013-01-09T22:39:42.140 に答える