我试图从这样的文件路径创建一个零件编号的正则表达式模式
\D6-DCUsers$nameProfileDesktopNew folderXXX-XX-XX-XXX OP1 RAN.NC
其中XXX-XX-XX-XXX
是我想提取的字符串,OP后的数字有时会改变,并且RAN可能并不总是存在。文件位置也会改变。
任何帮助都将不胜感激
我不太擅长正则表达式,昨天花了将近2个小时试图弄清楚这个。我得到的最接近的是(?:.(?!\))+$
,它捕获了路径的末端,但是我不能为我的生命弄清楚如何将其缩小到仅输出特定字符串。
如果您的目标是提取"XXX-XX-XX-XXX"它有这种特殊的结构。首先,你可以把弦分开。然后,在最后一部分中,您可以提取前13个字符。下面的代码片段可以做到这一点。
a = r"""\D6-DCUsersnameProfileDesktopNew folderXXX-XX-XX-XXX OP1 RAN.NC"""
a.split('\')[-1][0:13]
您需要一个regexp来捕获最后一个文件夹字符""以及该位置后的第一个空格
- 匹配所有字符,直到最后一个文件夹字符(你必须双击来转义它):
.*\
- 然后捕获所有不是空格的内容:
([^ ]+)
全答:
.*\([^ ]+)
查看实际操作:https://regex101.com/r/VBJmaP/1
终于自己解决了;不确定这有多有效,但它对我有效,所以:
^\(.+\)*(.+)s*(?:OPd)s*(?:.*).(.+)$