我正在尝试创建一个正则表达式来识别注释。它必须以
目前,我已经得到了
有什么提示吗?
//
开头,并以换行符或*)
模式结尾。目前,我已经得到了
(\/\/)([^\n\r]+)
,但我无法添加*)
模式。有什么提示吗?
^\/\/[^\n\r]+(?:[\n\r]|\*\))$
匹配:
^
字符串的开头\/\/
匹配两个斜杠[^\n\r]+
匹配不是换行符或回车符的字符,1次或多次(?:
非捕获组
[\n\r]|\*\)
匹配换行符、回车符或*))
关闭非捕获组$
字符串的结尾根据评论更新后,这是最终的正则表达式:
\/\/[^\n\r]+?(?:\*\)|[\n\r])
(\/\/)(.+?)(?=[\n\r]|\*\))
。
?=
表示最后一个组是积极前瞻。它只断言以下字符可以匹配新行或 *)
样式。如果您也想匹配新行或 *)
样式,请删除 ?=
。
.+?
表示懒惰匹配,即尽可能少地匹配字符。因此,对于字符串例如 // something *) something *)
,它会在第一个 *)
之前停止匹配。//\n
(您先前的正则表达式也没有),因为 +
表示至少一个字符。如果要匹配这样的字符串,请在正则表达式中使用 *
替代 +
。(...)
,那就更好了,因为使用内置于编程语言中的正则表达式库来评估匹配项会更容易:\/\/.*(?=[\n\r]|\*\))
。 - hendrikschnack^(\/\/.*[\r\n]){3}$
如果想要查找带有 /** */ 注释块的代码 这里 会解释几种方法。
//
,会发生什么? - Galik