Regex 正则表达式注释

Regex 正则表达式注释,regex,Regex,我有两种意见 /和/*…*/ 我需要匹配/*…*/,并选择这些注释之间的所有数据。 然后将//+添加到包括/*和*/在内的所有数据中,使其看起来像: //+/* //+ line 1 //+ line 2 //+*/ 同一文件中有标记为/的注释,不应拾取这些注释。 使用以下正则表达式,它将拾取以/ ^[\t]*[\/\*].* ^[ \t]*[\*\/].* 识别/*和*/注释开始和结束的正确正则表达式是什么。 谢谢 更新: 是否有一个表达式可以获得/*或*/的精确匹配? 为了搜索/*,我使

我有两种意见
/
/*…*/
我需要匹配
/*…*/
,并选择这些注释之间的所有数据。 然后将//+添加到包括/*和*/在内的所有数据中,使其看起来像:

//+/*
//+ line 1
//+ line 2
//+*/
同一文件中有标记为
/
的注释,不应拾取这些注释。 使用以下正则表达式,它将拾取以
/

^[\t]*[\/\*].*

^[ \t]*[\*\/].*
识别
/*
*/
注释开始和结束的正确正则表达式是什么。 谢谢

更新: 是否有一个表达式可以获得
/*
*/
的精确匹配? 为了搜索
/*
,我使用了
\/*.
,但是如果遇到
/
,它也会选择它。

我已经写过了。这不是一个小问题。最终结果是:

 (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)
还有一点值得指出:

其他元素中的注释 尽管我们的正则表达式很好地描述了c风格的注释,但当某些内容看起来是注释,但实际上是更大元素的一部分时,仍然存在问题

解决方法是编写正则表达式来描述每个可能较大的元素,并找到它们,确定每个元素的类型,然后丢弃那些不是注释的元素。有一些称为lexer或tokenizer的工具可以帮助完成此任务。lexer接受正则表达式作为输入,扫描流,选择与正则表达式匹配的标记,并根据匹配的表达式对标记进行分类。正则表达式的贪婪属性用于确保最长匹配。尽管为C编写一个完整的lexer超出了本文的范围,但感兴趣的人应该看看lexer生成器,比如和

正则表达式不是将块注释转换为行注释的正确方法。询问如何使用任何方法进行此操作。有一些工具比正则表达式做得更好。公认的答案推荐使用该软件。

我已经写过了。这不是一个小问题。最终结果是:

 (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)
还有一点值得指出:

其他元素中的注释 尽管我们的正则表达式很好地描述了c风格的注释,但当某些内容看起来是注释,但实际上是更大元素的一部分时,仍然存在问题

解决方法是编写正则表达式来描述每个可能较大的元素,并找到它们,确定每个元素的类型,然后丢弃那些不是注释的元素。有一些称为lexer或tokenizer的工具可以帮助完成此任务。lexer接受正则表达式作为输入,扫描流,选择与正则表达式匹配的标记,并根据匹配的表达式对标记进行分类。正则表达式的贪婪属性用于确保最长匹配。尽管为C编写一个完整的lexer超出了本文的范围,但感兴趣的人应该看看lexer生成器,比如和


正则表达式不是将块注释转换为行注释的正确方法。询问如何使用任何方法进行此操作。有一些工具比正则表达式做得更好。公认的答案是推荐软件。

在一般情况下,这个问题实际上非常棘手。我以前解决过这个问题,但它不是一个超级简单的正则表达式。的副本?在一般情况下,这个问题实际上非常棘手。我以前解决过这个问题,但它不是一个超级简单的正则表达式。重复的?谢谢你的文章。只选择开头和结尾注释(/*和/)的正确正则表达式是:/*.*/。已尝试此操作,但未获得/。为了简化,我只看一行,不需要在/*和*/之间选择块。谢谢你的文章。只选择开头和结尾注释(/*和/)的正确正则表达式是:/*.*/。已尝试此操作,但未获得/。为了简化,我只看一行,不需要在/*和*/之间选择块。