在线等--- 求提取局域网地址中的文件名的正则表达式?

打杂人 2010-03-24 06:01:10
各位CSDN高手们:小弟在此谢过,
如下这几种可以代表所有的类型:
\\192.168.128.165\case\C94+ora9i\oracle9i.cat
\\192.168.128.165\case\C663\SampleReports.cat
\\192.168.128.165\case\bAuto\2009-12-08\C1646\TutorialReports.cat
\\192.168.128.165\case\Auto\2009-08-26\36647\CASE\TutorialReports.cat
求一正则表达式,
取出其中的C94+ora9i,C663,C1646,36647等
规律是要么是C开头,要么纯数字,纯数字位数在1至7位之间,均在\****\之间.
谢过!!
...全文
94 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
打杂人 2010-03-25
非常感谢lxcnn 帮助解决问题.是我问题有点描述不清,再次感谢!!!
  • 打赏
  • 举报
回复
-过客- 2010-03-24

String[] src = {"\\\\192.168.128.165\\case\\C94+ora9i\\oracle9i.cat", "\\\\192.168.128.165\\case\\C663\\SampleReports.cat", "\\\\192.168.128.165\\case\\bAuto\\2009-12-08\\C1646\\TutorialReports.cat", "\\\\192.168.128.165\\case\\Auto\\2009-08-26\\36647\\CASE\\TutorialReports.cat"};
String pattern = "(?<=\\\\)(?:C[^\\\\]+|\\d{1,7})(?=\\\\)";
for(int i=0;i<src.length;i++)
{
Matcher m = Pattern.compile(pattern).matcher(src[i]);
if(m.find())
{
System.out.println(m.group());
}
}


事实上楼主要考虑下,CASE为什么不取,它也是符合你现在的规则的,我上面只是用if,而不是while规避了这一问题
\\192.168.128.165\case\Auto\2009-08-26\36647\CASE\TutorialReports.cat
  • 打赏
  • 举报
回复
相关推荐
发帖
Java
加入

4.9w+

社区成员

Java相关技术讨论
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
申请成为版主
帖子事件
创建了帖子
2010-03-24 06:01
社区公告
暂无公告