Regex: полный путь в пакет Java - PullRequest
       21

Regex: полный путь в пакет Java

1 голос
/ 29 февраля 2012

Я хотел бы использовать одно регулярное выражение для преобразования полностью определенного пути (например, /home/user/java/project/src/main/java/com/website/project/File.java) в соответствующий пакет Java.

Это означает, что я хотел бы удалить все до и включая «java /», имя файла плюс косую черту.А затем превратите все оставшиеся косые черты в точки.

Мне кажется, что я могу довольно далеко продвинуться, используя следующий пункт соответствия

.+main\/java\/|\/|[a-zA-Z$]+(\.java)

и заменив его точкой.(Регулярное выражение в основном ищет все прежде, включая «main / java /», затем заменяет все / на., А затем удаляет имя файла.

Проблема в том, что у меня сейчас слишком много точек, которые я, очевидно, не могуИзбавьтесь от этого, поскольку я заменяю на точки:)

И поскольку я не слишком хорош с регулярными выражениями, я, вероятно, в любом случае использую совершенно неправильный подход ...

Я бы очень хотелблагодарю за любую помощь.

PS .: К сожалению, мне нужно использовать только одно регулярное выражение, поскольку я могу вводить только одно, а не сохранять результаты во временные переменные или что-то в этом роде.

Спасибо большоемного!

Редактировать

Я пытаюсь создать tmSnippet для TextMate / Sublime Text.Я хотел бы добавить фразу "package com.company.project" (но с фактическим именем пакета, конечно) автоматически в новые файлы.Дело в том, что в таком фрагменте вы можете взять полный путь к файлу и запустить его через регулярное выражение перед выводом.Вот почему я могу использовать только одно регулярное выражение.

Edit2

Я смог сделать то, что хотел, используя скрипт Python и запустив это как команду вВозвышенный текст.Для тех, кто заинтересован, смотрите этот GitHub commit .Мне все еще интересно, можно ли было бы превратить все это в один RegEx.Я даже не уверен, что это возможно ...

1 Ответ

0 голосов
/ 29 февраля 2012

Я не совсем уверен, что вы пытаетесь сделать и где вам нужно «внедрить» это регулярное выражение, но следующее регулярное выражение вернет две группы захвата, первая - путь к файлу Java, а вторая -само имя файла:

.+main\\/java\\/([[A-Za-z0-9]+\\/]+)\\/([A-Za-z0-9]+)\\.java

Затем вы можете заменить '/' в первой захваченной группе на '.', а затем добавить точку и вторую захваченную строку, давая вам полное имя класса Java.

Как я уже сказал, я не уверен, почему у вас есть ограничения на невозможность использования переменных, но, надеюсь, рабочее регулярное выражение - это шаг вперед для вас.

...