2024-10-06 14:24:09 发布
网友
我需要找到所有匹配项并删除它们,假设我需要删除定义在两行上的宏:
#define something \ void single(double * state, char ch);
我得到了这个regex:#.*\n.*,它正在工作pyregex.com网站,和pythex.com网站但在我的代码中没有:
#.*\n.*
我甚至尝试过r"""#.*\\\n.*""",但都没用
r"""#.*\\\n.*"""
试试下面的方法
In [78]: s = """#define something \ ....: void single(double * state, char ch); ....: /*something else*/""" In [97]: re.sub(r"#.*?\n","", s) Out[97]: '/*something else*/'
请评论它是否有效。在
尝试编译正则表达式以匹配多行字符串:
myFile = re.sub(re.compile('#.*\n.*', re.MULTILINE),"", myFile, count=0, flags=0)
假设您从一个名为/tmp/macro.txt的文件中获取字符串,此程序将匹配并删除所有内容:
/tmp/macro.txt
即使是第二行后面的行-正则表达式也需要更新以避免这种情况。 我用于测试的/tmp/macros.txt文件是:
/tmp/macros.txt
#define somenthing \ void single(double * state, char ch); aaaaaaaaa aaaaaaaa
如果字符串是在本地(在python程序中)定义的,那么在打印字符串时,您自己会说其中没有换行符,因此查找换行符的regex将不匹配。在
在这种情况下,匹配的是一个以#开头的字符串,如下所示:
#
>>> import re >>> str="""#define something \ ... void single(double * state, char ch);""" >>> myFile = re.sub('^#.*',"", str, count=0, flags=0) >>> myFile '' >>> str '#define something void single(double * state, char ch);' >>>
试试下面的方法
请评论它是否有效。在
尝试编译正则表达式以匹配多行字符串:
假设您从一个名为
^{pr2}$/tmp/macro.txt
的文件中获取字符串,此程序将匹配并删除所有内容:即使是第二行后面的行-正则表达式也需要更新以避免这种情况。 我用于测试的
/tmp/macros.txt
文件是:如果字符串是在本地(在python程序中)定义的,那么在打印字符串时,您自己会说其中没有换行符,因此查找换行符的regex将不匹配。在
在这种情况下,匹配的是一个以
#
开头的字符串,如下所示:相关问题 更多 >
编程相关推荐