RegEx JavaScript:匹配连续的单行注释

时间:2017-09-23 18:55:35

标签: javascript regex

我正在尝试编写一个RegEx来解析单行注释组。

鉴于此输入:

//line 1
//line 2
//line 3

//line 4
//line 5
//line 6

我希望有两场比赛:第1-3和第4-6行。使用我当前的RegEx (^\/\/[\S\s]+$)我有一个匹配:第1-6行,尽管它们之间有一个空行。

问题是\s匹配任何空白字符,因此包含空行。但与此同时,换行符 是RegEx的一部分 - 但只有当行以//开头时,我才会被卡住。

如何阻止RegEx与空白行匹配?

2 个答案:

答案 0 :(得分:2)

你可以尝试这个:

/(^\/\/[^\n]+$\n)+/gm

https://regex101.com/r/CrR9WU/1

首先在每行的开头选择两个/,然后选择换行符,最后(在行尾)新行字符本身。有两个匹配:第1行到第3行,第4到第6行。如果您还允许空白注释行,例如//,那么这也会这样做:

/(^\/\/[^\n]*$\n)+/gm

修改
我知道,现在有点晚了,但Casimir的有用评论让我了解了这个修改过的解决方案:

/(?:^\/\/.*\n?)+/gm

它解决了最终\n的问题,不捕获组并且更简单。 (它与Jan的解决方案很相似;-) ......)

答案 1 :(得分:1)

这是修饰符的用途:

from collections import Counter

df['Label'] = df.Label.map(Counter(df.Label))
print(df)
       Label
Index       
0          5
1          3
2          5
3          5
4          3
5          5
6          2
7          2
8          5
9          3

使用(?:^\/{2}.+\n?)+ 模式,请参阅a demo on regex101.com

<小时/> 分开了,这说:

MULTILINE