如何使用正则表达式查找'/*N*/'

Posted

技术标签:

【中文标题】如何使用正则表达式查找\'/*N*/\'【英文标题】:how to find '/*N*/ ' using regexp如何使用正则表达式查找'/*N*/' 【发布时间】:2011-04-25 10:35:57 【问题描述】:

我不想只为这个特定问题学习正则表达式。 我需要通过 C++ 文件找到一些 '/*N*/ ' cmets。 有人可以编写一个找到此类 cmets 的正则表达式吗?

【问题讨论】:

你想要还是不想要 RegExp? 不想学习 :) 对不起这个错误 您是在寻找 N,还是 N 是实际的评论文本? \/\*N\*\/ - 如果问题实际上是regex 问题,请不要用c++ 标记问​​题... Python snippet to remove C and C++ comments 的可能重复项 【参考方案1】:

怎么样:(?

它使用lookbehinds 和lookaheads 并捕获注释文本(否则删除.* 周围的括号,而不是捕获)。确保使用多行搜索,因为这些是多行 cmets

【讨论】:

【参考方案2】:

试试这个正则表达式:

/\/\*(.*?)\*\//

这就是它的工作原理:

\/    <- The / character (escaped because I used / as a delimiter)
\*    <- The * character (escaped because it's a special character)
(     <- Start of a group
  .     <- Any character
  *     <- Repeated but not mandatory
  ?     <- Lazy matching
)     <- End of the group
\*    <- The * character
\/    <- The / character

编辑:它不处理\n\r\n,如果你希望它考虑带有m 标志的@Alex answer。

【讨论】:

+1(尽管我考虑过投反对票:OP 不想学习正则表达式:-P) 我没有说我不想解释 :D【参考方案3】:

怎么样

/\/\*(.+?)\*\//m

$1 将成为您的 cmets。

希望m 模式修饰符也可以使句点(全部匹配)匹配新行(\n)。

注意+ 意味着它只会匹配具有至少一个字符的 cmets - 因为您似乎想知道 cmets 本身,这没关系(0 长度的注释有什么用处)?

但是,如果您想知道评论块的总数,请将 +(1 或更多)更改为 *(0 或更多)。

另外,为什么不试试正则表达式呢?一开始很棘手,因为语法看起来很有趣,但它们确实很强大。

【讨论】:

以上是关于如何使用正则表达式查找'/*N*/'的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用啥正则表达式在逗号分隔列表中查找 Nᵗʰ 条目?

使用 python 和正则表达式 BeautifulSoup lxml 查找文本

在正则表达式中如何定义变量?

正则表达式如何匹配excel文件

如何使用正则表达式查找重叠匹配?

正则表达式