我有一个正则表达式(请参阅this question),用于匹配文本文件中的C函数定义。特别是,我正在处理一些f () {
eval "$(printf '%q ' "$@")"
}
输出。
git diff
f = open(input_file)
diff_txt = ''.join(f.readlines())
f.close
re_flags = re.VERBOSE | re.MULTILINE
pattern = re.compile(r"""
(^[^-+]) # Problematic line: Want to ensure we do not match lines with +/-
(?<=[\s:~])
(\w+)
\s*
\(([\w\s,<>\[\].=&':/*]*?)\)
\s*
(const)?
\s*
(?={)
""",
re_flags)
是以常规方式生成的一些原始input file
输出:
git diff
我的正则表达式字符串中的第一行git diff <commit-sha-1> <commit-sha-2> > tmp.diff
存在问题。如果没有这一行,正则表达式将成功匹配(^[^-+])
中的所有C / C ++函数,但是没有匹配。我需要这一行,因为我不想排除在两个存储库修订版之间添加或删除的函数,添加和删除的行标识为
input_file
我已经阅读了文档,但我似乎无法找到错误的位置,我们非常感谢您的帮助。
答案 0 :(得分:0)
- 和+是正则表达式中的特殊字符。尝试用斜杠转义它们 - [^ \ - \ +]
答案 1 :(得分:0)