1

たとえば、文字列がある"Sc_bookstore.PKG_book.SP_Harrypotter"場合。

スキーマ、パッケージ、およびStoredProcをどのように分離しますか?つまり、次の出力を取得したいと思います。

Sc_bookstore
PKG_book
SP_Harrypotter

この正規表現を複数のStoredProc呼び出しで使用する予定であり、それらはすべて「Sc_」「PKG_」「SP_」の標準に従います。

前もって感謝します!

4

5 に答える 5

5

正規表現の分割区切り文字が必要な場合は、"\\."またはを使用します(のように)。"[.]"String.split

Java正規表現のA.は、「任意の文字に一致する」ことを意味します(おおよそ、オプションによって異なります)。上記の2つの形式は、この意味をエスケープ/防止して、文字通りのピリオドと一致するようにします。

于 2012-08-16T03:10:29.107 に答える
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"
于 2012-08-16T03:13:19.820 に答える
0

分割を使用できます(正規表現なし)

String[] values;
values = str.split("\\.");
于 2012-08-16T03:12:04.610 に答える
0

本当に正規表現が必要な場合は、次の行にあるものがあります。

^(Sc_\w+)\.(PKG_\w+)\.(SP_\w+)$

グループの値をキャプチャできるようになります

入力用Sc_bookstore.PKG_book.SP_Harrypotter

Group 1: "Sc_bookstore"
Group 2: "PKG_book"
Group 3: "SP_Harrypotter"

しかし、あなたの場合、文字列を分割するだけで.あなたのニーズに非常によく合います

于 2012-08-16T03:14:32.973 に答える
0

1つの文字列に常にそのようなレコードが1つだけ含まれていると仮定して、次を使用します。

^Sc_([^.]+)\.PKG_([^.]+)\.SP_([^$]+)$

...これにより、文字列のSc_、PKG_、およびSP_の部分が削除され、「コンテンツ」のみが返されることに注意してください。

テストの目的で、正規表現をテストするための単純なJavaRegexTesterアプリケーションを作成しました。

于 2012-08-16T03:16:13.280 に答える