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

时间:2017-01-10 15:56:36

标签: regex flex-lexer

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

然后我的问题被简化为接受除*/以外的任何字符序列的子问题。我尝试了几种方法来实现这一目标。我试过了:[^*\/],合理地说它不起作用。任何帮助或建议都很明显。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

我会使用前瞻和后瞻的组合来实现顶级解决方案。

Regex101

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

这样可以确保在一个组中捕获s/*之间的所有内容(假设换行符和*/修饰符)。

对于“* /”“

以外的任何字符集的正则表达式是什么

Regex101

这很简单:

/[^\/\*]/