因为有/*..*/
和<<
,>>
,!!
符号的评论块,我需要将此文件的内容复制到另一个文件中,同时删除评论块和其他符号。
例如:
/*
author : xyz
date : 23/08/2015
this block is only for reference
*/
? fill j.dat
!!
a1 hi hello
b1 red orange
!!
? fill s.dat
<<
>>
actual content of the file.
我只想将actual content of the file
复制到另一个文件。我可以使用任何正则表达式来避免这种情况吗?
答案 0 :(得分:0)
我可能会使用这个正则表达式
<form id="frmSearch"">
Search: <input type="text" name="qryWords" value="" />
<input type="button" name="submit" value="Search" />
</form>
答案 1 :(得分:0)
以下正则表达式替换可用于示例文本,但它可能无法很好地处理嵌套部分:
import re
text = """/*
author : xyz
date : 23/08/2015
this block is only for reference
*/
? fill j.dat
!!
a1 hi hello
b1 red orange
!!
? fill s.dat
<<
>>
actual content of the file. """
print re.sub("((\/\*.*?\*\/)|(<<.*?>>)|(!!.*?!!)|(^\? .*?$))" , "", text, flags=re.S+re.M).lstrip("\n")
这会显示:
actual content of the file.
这些将从文件中的任何位置删除,而不仅仅是在开头。
答案 2 :(得分:0)
当我使用re.sub时,我没有得到所需的结果,但在使用re.compile之后,我能够得到结果。我已经使用以下内容来获得所需的输出,但我不得不在多个步骤中获得它。以下是我的代码。
str1 = re.sub(re.compile("((/\*.*?\*/)|(<<.*?>>)|(!!.*?!!)|(\? (.*)?\?)|)", re.DOTALL), "", contents)
str1 = re.sub(re.compile('^[^\*]*\*', re.DOTALL), "", str1)
str1 = re.sub(re.compile('(?m)^\*', re.DOTALL), "", str1)
str1 = re.sub("(;\\\g)|(\\\g)", ';', str1)