我需要在最后一个反斜杠后提取8或10位数字。我没有足够使用正则表达式,但这是我到目前为止(?!\\\\)(?<=.*\\)(?:[^\d]*)(?<id>\d+)(?:[^\d])
\\server\root\list\listName 082713\type_102113\25765199.bpo.pdf
\\server\root\list\listName 082713\type_102113\25765280.bpo.pdf
\\server\root\list\listName 082713\type_102113\25779752.bpo.pdf
\\server\root\list\listName 082713\type_102113\NAME1 0020412714_BPO.pdf
\\server\root\list\listName 082713\type_102113\NAME2 0020421822_BPO.pdf
\\server\root\list\listName 082713\type_102113\NAME3 0020443370_BPO.pdf
a:\listName 082713\type_102113\25765199.bpo.pdf
a:\listName 082713\type_102113\25765280.bpo.pdf
a:\listName 082713\type_102113\25779752.bpo.pdf
a:\listName 082713\type_102113\NAME1 0020412714_BPO.pdf
a:\listName 082713\type_102113\NAME2 0020421822_BPO.pdf
a:\listName 082713\type_102113\NAME3 0020443370_BPO.pdf
在'hwnd'的帮助下,下面的表达式实际上解决了这个问题,但是我的目标是帮助我提取文件夹名称中的一组数字,但很容易改变“环视”表达式。
(?<![^\\\D ])(?<id>\d+(?:-\d+)?)(?=(?:(?:\.[a-z]|[_-])))
答案 0 :(得分:2)
你似乎在思考这个表达。我会选择负面观察。
(?<![^\\ ])\d{8,10}
正则表达式:
(?<! look behind to see if there is not:
[^\\ ] any character except: '\\', ' '
) end of look-behind
\d{8,10} digits (0-9) (between 8 and 10 times)
请参阅live demo
在最后一个反斜杠之后的最后一组数字后面有点或下划线的另一个解决方案是正向前瞻
(\d+)(?=[._])
请参阅live demo
答案 1 :(得分:1)
这样的模式应该在多线模式下工作:
(?<id>\d+)[^\\\d]*$
这将匹配在组"id"
中捕获的一个或多个数字,后跟除反斜杠或数字之外的任何字符的零个或多个,后跟行尾。
答案 2 :(得分:0)