我需要对几个包含1,000个条目的列表进行排序和区分.列表看起来像:
11-2-3049_2007_squib.pdf
11-11-5476_2004_squib.pdf
13-2-5477_2006_squib.pdf
14-3-3045A_2004_squib.pdf
14-CMF-3046_2004_squib.pdf
14-2-3047_2005_squib.pdf
14-4-3048_2004_squib.pdf
15-7-3050P_2004_squib.pdf
Run Code Online (Sandbox Code Playgroud)
我希望按照第二个-
和之前的数字排序_
,例如3049
在第一个例子中.
我无法将列和正则表达式的排序结合起来取得任何成功.你们都建议什么?
这应该做的伎俩:
:sort r /\v^(.{-}-){2}\zs.{-}\ze_/
Run Code Online (Sandbox Code Playgroud)
看到
:help sort
Run Code Online (Sandbox Code Playgroud)
在这里的背景
正则表达式包含一些曲折:
\v
搞魔术模式(减少转义的需要)\zs
并\ze
标记实际匹配结果的开始和结束{-}
执行非贪婪的kleene-star匹配(用Perl表示法,.{-}
将会.*?
)