如何使用正则表达式查找'/*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*/'的主要内容,如果未能解决你的问题,请参考以下文章