正则表达式不能在pycharm中工作

2024-10-06 14:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要找到所有匹配项并删除它们,假设我需要删除定义在两行上的宏:

#define something \
void single(double * state, char ch);

我得到了这个regex:#.*\n.*,它正在工作pyregex.com网站,和pythex.com网站但在我的代码中没有:

^{pr2}$

我甚至尝试过r"""#.*\\\n.*""",但都没用


Tags: 代码com定义网站chsomethingregexstate
2条回答

试试下面的方法

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的文件中获取字符串,此程序将匹配并删除所有内容:

^{pr2}$

即使是第二行后面的行-正则表达式也需要更新以避免这种情况。 我用于测试的/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);'
>>> 

相关问题 更多 >