我正在尝试使用正则表达式来识别评论。它必须以//
开头,并以新行或*)
模式结束。
目前,我设法获得此(\/\/)([^\n\r]+)
,但我未能成功添加*)
模式。
任何提示?
答案 0 :(得分:2)
尝试这样:
^\/\/[^\n\r]+(?:[\n\r]|\*\))$
匹配
^
字符串的开头\/\/
匹配两个正斜杠[^\n\r]+
匹配不是新行或回车1次或多次(?:
非捕获组
[\n\r]|\*\)
匹配换行符或回车符或*))
关闭非捕获组$
字符串的结尾编辑:
根据评论更新,这是最终的正则表达式:
答案 1 :(得分:0)
您可以使用(\/\/)(.+?)(?=[\n\r]|\*\))
。
?=
表示最后一组是积极向前看。它只声明以下字符可以匹配新行或 - *)
模式。如果您还想匹配新行或*)
模式,只需删除?=
。
.+?
表示延迟匹配,即尽可能少地匹配字符。因此,对于// something *) something *)
这样的字符串,它会在第一个*)
之前停止匹配。
请注意,此模式与//\n
不匹配(您之前的正则表达式不一样),因为+
表示至少有一个字符。如果您想匹配此类字符串,请在正则表达式中使用*
而不是+
。
最后,尽管你可以使用正则表达式来解析这样的单行注释,正如Jerry Coffin在评论中所说,不要尝试使用正则表达式解析编程源代码,因为所有合法源代码构成的语言通常不是常规语言。