匹配行和提取文件名我有一个字符串以以下格式正则表达式在Java
Index: /aap/guru/asdte/atsAPI.tcl
===================================================================
RCS file: /autons/atsAPI.tcl,v
retrieving revision 1.41
Index: /aap/guru/asdte/atsAPI1.tcl
===================================================================
RCS file: /autons/atsAPI1.tcl,v
retrieving revision 1.41
我想要的是匹配行开始Index:
,然后得到路径的文件名。
我的意思是先获得Index: /aap/guru/asdte/atsAPI.tcl
,然后提取atsAPI.tcl
作为最终结果。
目前我正在使用匹配两次,第一整行,然后提取文件名。
我的问题是,如何在java中的单个正则表达式中做到这一点。
当前的代码
String line = "Index: /aap/guru/asdte/atsAPI.tcl\r\n===================================================================\r\nRCS file: /autons/atsAPI.tcl,v\r\nretrieving revision 1.41\r\n\r\nIndex: /aap/guru/asdte/atsAPI1.tcl\r\n===================================================================\r\nRCS file: /autons/atsAPI1.tcl,v\r\nretrieving revision 1.41";
Pattern regex1 = Pattern.compile("Index:.*?\\n", Pattern.DOTALL);
Pattern regex2 = Pattern.compile("[^*/]+$");
Matcher matcher1 = regex1.matcher(line);
while (matcher1.find()) {
String s = matcher1.group(0);
Matcher matcher2 = regex2.matcher(s);
while (matcher2.find()) {
System.out.println(matcher2.group(0));
}
}
https://codebunk.com/b/128141613/ –
你不需要'DOTALL'标志,它使你在你的不贪婪的点上添加一个换行符。 '.'默认与新行不匹配。 – revo
@g_p我已经包括了如何使用一个正则表达式以及我的答案中的工作演示。希望能帮助到你! – degant