使用多行搜索的正则表达式

时间:2014-06-20 11:35:45

标签: regex

我有两种类型的评论如下。我有正则表达式\/\*.*\*\/没有找到第二种类型的注释,但第一种。我认为这是因为它有多条线?

正则表达式需要进行哪些修改才能找到两种类型的注释?

第一种类型:

/* Comment type1 */

第二种类型:

/* 

 * JD-Core Version:    0.7.0.1

 */

5 个答案:

答案 0 :(得分:5)

我建议另一个解决方案:

\/\*([\S\s]+?)\*\/

这将避免在资源中贪婪的点。

答案 1 :(得分:3)

假设您的语言没有检查注释是否嵌套,您可以这样做:

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

你说你使用Notepad ++:这是正则表达式的截图。

Notepad++ Regex

答案 2 :(得分:0)

点与换行符不匹配,因此将DOTALL标志添加到正则表达式中:

/\/\*.*?\*\//s

对点.*?使用不情愿的量词(即添加问号),以便在第一次结束时停止*/

答案 3 :(得分:0)

您的正则表达式应使用sg修饰符,

/\/\*.*?\*\//sg

如果你想捕获/* */中存在的文本,请转到下面的正则表达式,

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

<强>解释

s    #  Dotall
g    #  global
*?   #  Non-greedy match

DEMO

答案 4 :(得分:0)

dot .并不总是与换行符匹配。您可以尝试使用标志来修改它,或使用显式字符类。这是一个版本,它不允许除注释中的序列*/之外的所有内容:

/\/\*([^\/]|[^*]\/)*\*\//

demo