我在这里介绍问题和解决方案。我在SO中进行了广泛的研究后发现了这个,发现了许多相关的例子,但没有一个与我的确切用例匹配。
\n
,返回\r
或字符串结尾$
每行的内容在此不感兴趣/关注。源字符串中的行数可以变化,但我想将行数限制为最大数量。
Clip 08.jpg
Clip 31.jpg
Clip 31b.jpg
Clip 32.jpg
Clip 40.jpg
Clip 40b.jpg
Clip 53.jpg
Clip 54.jpg
Maui Clip 53b.jpg
^((?:.*(?:\n|\r|$)){1,5})
其中最大行数(您要提取的数字)是量词{1,5}
中的第二个数字,在本例中为#34; 5"。
如果有人可以改进此解决方案,或发现任何问题,请在此处发布。
答案 0 :(得分:1)
我发现这是一个更好的解决方案。
(?m)(?:^.*\R?){1,20}
https://regex101.com/r/o2D6iG/2
(?m) # Inline modifier: Multi-line mode
(?: # Cluster
^ # BOL
.* # optional not newlines
\R? # optional line terminator
){1,20} # End Cluster, 1-20 times
如果你选择了行终止符,它会处理EOS
此外,当多行模式生效时,它会强制\R
匹配
或者它不会前进。
如果您没有\R
构造,则可以使用低功能系列
对它的变化。
(?m)(?:^.*(?:\r?\n|\r)?){1,20}
https://regex101.com/r/KxxeAK/1
(?m) # Inline modifier: Multi-line mode
(?: # Cluster
^ # BOL
.* # optional not newlines
(?: \r? \n | \r )? # optional line terminator
){1,20} # End Cluster, 1-20 times
并且,您可能会取消多线模式(这只是保险)
(?:.*(?:\r?\n|\r)?){1,20}
的JavaScript https://regex101.com/r/jDTIMH/1
答案 1 :(得分:0)
^((?:.*(?:\n|\r|$)){1,<NumOfLinesToExtract>})
其中<NumOfLinesToExtract>
是从源列表顶部提取的行数。例如:
^((?:.*(?:\n|\r|$)){1,5})
会导致:
Clip 08.jpg
Clip 31.jpg
Clip 31b.jpg
Clip 32.jpg
Clip 40.jpg
有关详细信息,请参阅https://regex101.com/r/Xp1jwT/2
此RegEx执行以下操作: