我尝试了各种正则表达式,包括提到的那些 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")
答案 0 :(得分:1)
使用“Copyright \(c \)2012,The Linux Foundation。保留所有权利”。 您需要转义括号,因为它们已经在正则表达式中具有含义(捕获)。
搜索有关如何逃避正则表达式的更多信息。