Python正则表达式删除注释
时间: 2023-06-29 07:03:03 浏览: 145
可以使用re.sub()函数来删除Python代码中的注释。
以下是一个示例代码:
```python
import re
code = """
# This is a comment
print("Hello, World!") # This is also a comment
"""
# 删除单行注释
code = re.sub(r'#.*', '', code)
# 删除多行注释
code = re.sub(r'"""[\s\S]*?"""', '', code)
print(code)
```
输出:
```
print("Hello, World!")
```
在上面的示例中,使用了两个正则表达式来删除单行注释和多行注释。其中,`#.*`匹配以`#`开头的任意字符,直到行末;`"""[\s\S]*?"""`匹配以三个双引号开头和结尾的任意字符(包括换行符),使用了非贪婪模式`*?`以保证匹配最短的多行注释。
注意:这种删除注释的方法只适用于简单的Python代码,对于复杂的代码可能会有误删的情况。建议在删除注释之前备份原始代码。
相关问题
python 正则表达式删除注释
你可以使用正则表达式来删除Python代码中的注释。以下是一个示例代码:
```python
import re
def remove_comments(code):
pattern = r"(\".*?\"|\'.*?\')|(/\*.*?\*/|//[^\r\n]*$)"
code = re.sub(pattern, lambda m: m.group(1) if m.group(1) else '', code, flags=re.DOTALL)
return code
# 示例代码
code = '''
# 这是一个示例注释
def add(a, b):
# 返回两个数的和
return a + b
# 测试代码
print(add(2, 3))
'''
code_without_comments = remove_comments(code)
print(code_without_comments)
```
这段代码中的 `remove_comments` 函数使用了正则表达式来匹配注释并删除它们。在正则表达式中,我们定义了两个模式:一个用于匹配引号内的字符串,另一个用于匹配注释。通过使用 `re.sub` 函数,并结合 lambda 函数来判断匹配到的字符串是否在引号内,从而删除注释。最后,我们将删除注释后的代码打印出来。
请注意,这只是一个简单的示例代码,可能无法处理所有情况。在实际使用中,你可能需要根据你的代码特点进行适当的调整。
python正则表达式匹配c语言注释
可以使用以下正则表达式匹配C语言注释:
```
\/\*[\s\S]*?\*\/|\/\/.*
```
该正则表达式使用了两个模式,分别匹配多行注释和单行注释。具体解释如下:
- `\/\*[\s\S]*?\*\/` 匹配多行注释,其中:
- `\/\*` 匹配 `/*` 字符串
- `[\s\S]*?` 匹配任意字符,包括换行符,非贪婪模式
- `\*\/` 匹配 `*/` 字符串
- `\/\/.*` 匹配单行注释,其中:
- `\/\/` 匹配 `//` 字符串
- `.*` 匹配任意字符,不包括换行符
示例代码:
```python
import re
source_code = """
#include <stdio.h>
/*
* This is a multiline comment
* that can span multiple lines
*/
int main() {
int x = 10; // This is a single line comment
printf("Hello, world!");
return 0;
}
"""
pattern = r"\/\*[\s\S]*?\*\/|\/\/.*"
comments = re.findall(pattern, source_code)
for comment in comments:
print(comment)
```
输出结果:
```
/*
* This is a multiline comment
* that can span multiple lines
*/
// This is a single line comment
```