【发布时间】:2009-05-04 20:11:58
【问题描述】:
我想创建一个 java 正则表达式,用于选择文件路径中从 file: 到最后一个正斜杠 (/) 的所有内容。这样我就可以用不同的路径替换它。
<!DOCTYPE "file:C:/Documentum/XML%20Applications/joesdev/goodnews/book.dtd"/>
<myBook>cool book</myBook>
有人有什么想法吗?谢谢!!
【问题讨论】:
我想创建一个 java 正则表达式,用于选择文件路径中从 file: 到最后一个正斜杠 (/) 的所有内容。这样我就可以用不同的路径替换它。
<!DOCTYPE "file:C:/Documentum/XML%20Applications/joesdev/goodnews/book.dtd"/>
<myBook>cool book</myBook>
有人有什么想法吗?谢谢!!
【问题讨论】:
您只想转到结束引号之前的最后一个斜杠,对吗?如果是这样:
file:[^"]+/
(字符串“file:”,然后是除“之外的任何内容,以 / 结尾)
正确转义:
String regex = "file:[^\"]+/";
【讨论】:
您可以尝试自己处理此问题,但更好的方案是只选择引号之间的部分并使用 java.util.File 将目录名与文件名分开。这样您就不必担心 / vs \ 或各种转义字符。
【讨论】:
String newPath = "C:/Documentum/badnews";
String originalPath = "<!DOCTYPE \"file:C:/Documentum/XML%20Applications/joesdev/goodnews/book.dtd\"/>";
System.out.println(originalPath.replaceFirst("file:C:((/[/\\w%]+))", newPath));
【讨论】:
试试这个:
"file:.*/[^/]*"/>
【讨论】: