0

我尝试了各种正则表达式,包括提到的 @Python 3 正则表达式来查找多行注释以匹配下面给出的输入文件,完整的代码也在下面。以下是正则表达式正在使用 currenlty 匹配输入文件@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。保留所有权利”。您需要转义括号,因为它们在正则表达式中已经具有含义(捕获)。

搜索有关如何转义正则表达式的更多信息。

于 2013-01-09T22:39:42.140 回答