2012-02-28 10 views
1

正規表現を使用して正規表現のパスを設定したいとします(例:/ home/user/java/project/src/main/java/com/website/project/File)。 java)を対応するJavaパッケージに追加します。Regex:Javaパッケージへのフルパス

これは、ファイル名にスラッシュを加えた "java /"を含むすべてを削除したいということです。残りのすべてのスラッシュを点に変換します。

私は、次のmatch句

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

とドットで置き換えを使用することによって、かなり遠くに取得することができているようです。 (正規表現は基本的に "main/java /"を含むすべてのものを探し出し、/をすべて置き換えてからファイル名を削除します)

私は今や明らかに排除できないドットが多すぎます私は

:)ドットに置き換えていると私は正規表現とあまりにも良いおりませんので、私はおそらくとにかく完全に間違ったアプローチ...私は非常に任意の助けをいただければ幸いです

を使用しておりますので。

PS:残念ながら、1つだけ正規表現を使用する必要があります。結果を一時変数などに保存しないでください。

ありがとうございました!

編集

私はTextMateの/崇高テキストのtmSnippetを作成しようとしています。 "package com.company.project"というフレーズ(ただし実際のパッケージ名はもちろん)を新しいファイルに自動的に追加したいと思います。 問題は、そのようなスニペットでは、ファイルの完全なパスを取って、出力の前に正規表現を通して実行できることです。これは、正規表現を1つだけ使うことができる理由です。

EDIT2

私はPythonスクリプトを使用していることを実行することにより、私が欲しかったものを行うことができた崇高なテキストでのコマンドとして。 興味のある方はGitHub commitをご覧ください。これをすべて単一のRegExにすることが可能かどうかはまだ不思議です。私はそれが可能であるかもわかりません...

+0

なぜあなたは '/'をエスケープしていますか? –

+0

私は彼がPerl/sed/awkを考えていると思います。スラッシュは正規表現の区切り文字です。 –

+0

ああ、私は区切り文字であるので、スラッシュをエスケープしています... – Tim

答えて

0

私はあなたが何をしようとしているのか、この正規表現を "注入"する必要があるか分かりませんが、次の正規表現は、最初のJavaファイルへのパスであること、第二は、ファイル名そのものであること:

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

その後、'.'で1枚目の撮影のグループに'/'を交換して、あなたに完全に与えドットと第2の撮像文字列を追加することができます-qualified Javaクラス名。

私が言っているように、なぜあなたは変数を使うことができないという制限があるのか​​分かりませんが、うまくいけば働く正規表現はあなたにとって一歩前進です。

関連する問題