【发布时间】:2019-01-23 21:11:30
【问题描述】:
我有一个正则表达式,用于搜索大型代码库以查找用作类型或变量的特定标记的使用情况。假设令牌是“foo”,我想单独找到它。
我最初的正则表达式是这样的:
foo$|foo\s|foo\[|foo\*|<foo|foo>
匹配:foo 在行尾,foo 带有空格,foo 指针,foo 在集合中,等等...
我想排除 C++ 注释块中的实例。比如下面的例子。
// consume the foo and read another.
我尝试使用负前瞻来修改正则表达式,但这似乎不起作用
(?!\/\/).*(foo$|foo\s|foo\[|foo\*|<foo|foo>)
有人知道如何在正则表达式中执行此操作吗?
更新:
我只是想随便过滤掉在目标模式之前可能有两个正斜杠的行。我不关心嵌套 cmets、C 样式 cmets (/* */) 或任何跨越多行的内容。
【问题讨论】:
-
这很重要。为了可靠地检测 cmets,您还必须同时识别字符和字符串文字。基本上你需要做的是编写一个完整的 C++ 词法分析器。
-
顺便问一下,C++ 还支持三元组吗?
标签: regex regex-negation