1

例如,如果我有一个字符串"Sc_bookstore.PKG_book.SP_Harrypotter"

我将如何分离架构、包和 StoredProc?即,我想让他得到以下输出:

Sc_bookstore
PKG_book
SP_Harrypotter

我将在多个 StoredProc 调用中使用这个正则表达式,它们都遵循“Sc_”“PKG_”“SP_”的标准

提前致谢!

4

5 回答 5

5

使用"\\."or"[.]"如果需要正则表达式拆分分隔符(如String.split)。

Java 正则表达式.中的A表示“匹配任何字符”(大致取决于选项);上面的两种形式转义/阻止了这个意思,所以它匹配一个字面句号。

于 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

你可以使用 split (没有正则表达式)

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

假设一个字符串总是包含一个这样的记录,使用这个:

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

...请注意,这会删除字符串的 Sc_、PKG_ 和 SP_ 部分,并且只返回“内容”。

出于测试目的,我创建了一个简单的JavaRegexTester应用程序来测试正则表达式。

于 2012-08-16T03:16:13.280 回答