除“*/”之外的任何字符集的正则表达式是什么

What is the regex for any set of characters other than "*/"

我一直在使用 Lex,遇到了在 C 程序中查找 注释 并在最终输出中删除它们的问题。为此,我需要确定出现的任何 */(这就是传统多行注释的结束方式!)。

然后我的问题被简化为一个接受除 */ 之外的任何字符序列的子问题。我尝试了几种方法来实现这一点。我试过了:[^*\/],按理说它不起作用。任何帮助或建议都是值得赞赏的。

您需要按字面意思匹配后跟 */ 双字符序列的任何字符序列。积极向前看,你会实现这一目标。对于可能出现的多次 */,您需要正向回顾或文本开头 ((?<=^|\*\/)):

(?<=^|\*\/).*?(?=\*\/)

演示:https://regex101.com/r/y88e0T/2

我会结合使用先行和后行来实现顶级解决方案。

Regex101

/(?<=\/\*).*(?=\*\/)/s

这将确保 /**/ 之间的所有内容(假设换行符和 s 修饰符)都被捕获到一个组中。

对于"What is the regex for any set of characters other than “*/”"

Regex101

这很简单:

/[^\/\*]/