たとえば、文字列がある"Sc_bookstore.PKG_book.SP_Harrypotter"
場合。
スキーマ、パッケージ、およびStoredProcをどのように分離しますか?つまり、次の出力を取得したいと思います。
Sc_bookstore
PKG_book
SP_Harrypotter
この正規表現を複数のStoredProc呼び出しで使用する予定であり、それらはすべて「Sc_」「PKG_」「SP_」の標準に従います。
前もって感謝します!
正規表現の分割区切り文字が必要な場合は、"\\."
またはを使用します(のように)。"[.]"
String.split
Java正規表現のA.
は、「任意の文字に一致する」ことを意味します(おおよそ、オプションによって異なります)。上記の2つの形式は、この意味をエスケープ/防止して、文字通りのピリオドと一致するようにします。
文字列をデリメータで除算する必要がある場合は、Stringsplit
メソッドの使用を検討する必要があります。
String s = "Sc_bookstore.PKG_book.SP_Harrypotter";
String parts[] = s.split("\\.");
parts[0]; // holds "Sc_bookstore"
parts[1]; // holds "PKG_book"
parts[2]; // holds "SP_Harrypotter"
分割を使用できます(正規表現なし)
String[] values;
values = str.split("\\.");
本当に正規表現が必要な場合は、次の行にあるものがあります。
^(Sc_\w+)\.(PKG_\w+)\.(SP_\w+)$
グループの値をキャプチャできるようになります
入力用Sc_bookstore.PKG_book.SP_Harrypotter
:
Group 1: "Sc_bookstore"
Group 2: "PKG_book"
Group 3: "SP_Harrypotter"
しかし、あなたの場合、文字列を分割するだけで.
あなたのニーズに非常によく合います
1つの文字列に常にそのようなレコードが1つだけ含まれていると仮定して、次を使用します。
^Sc_([^.]+)\.PKG_([^.]+)\.SP_([^$]+)$
...これにより、文字列のSc_、PKG_、およびSP_の部分が削除され、「コンテンツ」のみが返されることに注意してください。
テストの目的で、正規表現をテストするための単純なJavaRegexTesterアプリケーションを作成しました。