正则表达式与评论不匹配

时间:2013-01-09 10:44:28

标签: python regex

我尝试了各种正则表达式,包括提到的那些 Python 3 regular expression to find multiline comment匹配下面给出的输入文件,完整代码也在下面。以下是正则表达式使用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

1 个答案:

答案 0 :(得分:1)

使用“Copyright \(c \)2012,The Linux Foundation。保留所有权利”。 您需要转义括号,因为它们已经在正则表达式中具有含义(捕获)。

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