2011-03-28 186 views
1

正则表达式的正则表达式去除之间#if X#endif //#if X 注意所有行的C风格的注释是非常重要的,需要考虑如何在Python中创建

#if X 
.... 
..... 
#endif //#if X 

不给所需○以下/ p:那么是对的?

re.compile("#if.*?#endif //#if X", re.MULTILINE + re.DOTALL) 
+0

什么问题? – unholysampler 2011-03-28 11:04:49

+0

什么问题(“不是所需的o/p”比较模糊)? – 2011-03-28 13:40:44

回答

1

而不是're.MULTILINE + re.DOTALL'试试're.MULTILINE | re.DOTALL',这是一个位字段

+0

虽然这不应该在这里,因为所有的标志都是2的幂,所以添加和“控制”它们将产生相同的结果。不过你还是对的。 – 2011-03-28 11:34:11

+0

哦。对。 /捂脸 – reflog 2011-03-28 14:31:47

2

到目前为止,你刚刚编译你的正则表达式,你还没有做过任何事情。

你需要这样做:

myregex = re.compile(r"#if.*?#endif //#if X", re.DOTALL) 
result = myregex.sub("", subject) 

其中subject是你想工作的字符串(和""是替换字符串)。

因为您根本没有使用开始/结束行锚点,所以不需要参数re.MULTILINE

1
re.compile(r'#if\s+([A-Z]+)$.+?#endif\s+//\s*#if\s+\1', re.M | re.S)