Я хотел бы создать регулярное выражение Java, которое выбирает все от file: до последней косой черты (/) в пути к файлу. Это так, чтобы я мог заменить его другим путем.
<!DOCTYPE "file:C:/Documentum/XML%20Applications/joesdev/goodnews/book.dtd"/> <myBook>cool book</myBook>
У кого-нибудь есть идеи? Спасибо !!
Вы просто хотите перейти к последнему слешу перед конечной кавычкой, верно? Если так:
file:[^"]+/
(строка "file:", затем что угодно, кроме ", оканчивающаяся на /) Правильно избежал:
String regex = "file:[^\"]+/";
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));
Вы можете попытаться обработать это самостоятельно, но лучшей схемой было бы просто выделить части между кавычками и использовать java.util.File, чтобы отделить имя каталога от имени файла. Таким образом, вам не нужно беспокоиться о / vs \ или различных escape-символах.
Попробуйте это:
"file:.*/[^/]*"/>