Python PDF编解码器仅部分屏蔽内容
我正在使用python PDF redactor,它工作得非常好: github中指定的屏蔽内容的语法如下所示,其中regex是要查找的模式,lambda表达式中的X是要用以下字符串替换找到的模式:Python PDF编解码器仅部分屏蔽内容,python,regex,pdf,lambda,filtering,Python,Regex,Pdf,Lambda,Filtering,我正在使用python PDF redactor,它工作得非常好: github中指定的屏蔽内容的语法如下所示,其中regex是要查找的模式,lambda表达式中的X是要用以下字符串替换找到的模式: options.content_filters = [ ( re.compile(r"5555-(\d{3})-(\d{3})-(\d{6})"), lambda m : "XXXX-XXX-XXX-XXXXXX" ) ] 但是如果我想找到与之匹配
options.content_filters = [
(
re.compile(r"5555-(\d{3})-(\d{3})-(\d{6})"),
lambda m : "XXXX-XXX-XXX-XXXXXX"
)
]
但是如果我想找到与之匹配的表达式,并且只屏蔽除最后四个字符以外的所有字符,比如:
options.content_filters = [
(
re.compile(r"5555-(\d{3})-(\d{3})-(\d{6})"),
lambda m : "XXXX-XXX-XXX-XXRRRR"
)
]
其中“R”表示保留原始字符。我在github中找不到任何关于如何做到这一点的文档,也没有使用一些内置的regex/lamda功能 您可以对模式进行重新分组,以捕获需要保留的内容,并使用匹配数据对象
m
:
options.content_filters = [
(
re.compile(r"5555-\d{3}-\d{3}-\d{2}(\d{4})"),
lambda m : "XXXX-XXX-XXX-XX" + m.group(1)
)
]
这里,5555-\d{3}-\d{3}-\d{2}
匹配5555-
,三位数,-
,三位数,-
,两位数和(\d{4})
捕获组1中的四位数。您可以使用m.group(1)
访问该值
如果您计划将这些代码作为整个单词进行匹配。考虑使用
r“\b5555-\d{3}-\d{3}-\d{2}(\d{4})\b”
r“(?)?