You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式移除字符串列表中/*与*/间的注释内容?

解决代码注释移除问题

问题分析

你需要移除列表中每个字符串里/*和*/包裹的注释(包含标记本身),同时清理掉多余的后缀字符。之前尝试的正则因为元字符未转义导致错误,replace只能处理固定文本,无法匹配任意长度的注释内容。

错误原因

你写的正则(?<=/*).*?(?=*/)存在两个核心问题:

  • *是正则的量词元字符,需要转义为\*才能匹配字面量的*符号
  • 没必要使用lookbehind断言,直接匹配整个/* ... */块更简单,且lookbehind对量词的支持有限,容易引发语法错误

解决方案

遍历列表中的每个字符串,用正则匹配并移除注释块,再清理多余的后缀字符:

import re

# 原始列表
new_list = [ '123456_xxxx /* cccccccccccccc */ /\n',  '67890_yyyy /* cccccccccccccc */ /\n' ]

processed_list = []
for line in new_list:
    # 移除/* 到 */之间的所有内容(包含标记)
    no_comment = re.sub(r'/\*.*?\*/', '', line)
    # 清理末尾的/和换行符,再去掉前后空白
    cleaned_line = no_comment.rstrip('/\n').strip()
    processed_list.append(cleaned_line)

print(processed_list)
# 输出结果: ['123456_xxxx', '67890_yyyy']

关键说明

  • 正则r'/\*.*?\*/':
    • /\*匹配字面量/*
    • .*?是非贪婪匹配,确保只匹配到最近的*/,避免跨多个注释块
    • \*/匹配字面量*/
  • rstrip('/\n')专门清理字符串末尾多余的/和换行符,strip()处理可能残留的首尾空格

内容的提问来源于stack exchange,提问作者user13696679

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:42:25