我正在尝试编写一个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与空白行匹配?
答案 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