例如,如果我有一个字符串"Sc_bookstore.PKG_book.SP_Harrypotter"
。
我将如何分离架构、包和 StoredProc?即,我想让他得到以下输出:
Sc_bookstore
PKG_book
SP_Harrypotter
我将在多个 StoredProc 调用中使用这个正则表达式,它们都遵循“Sc_”“PKG_”“SP_”的标准
提前致谢!
使用"\\."
or"[.]"
如果需要正则表达式拆分分隔符(如String.split
)。
Java 正则表达式.
中的A表示“匹配任何字符”(大致取决于选项);上面的两种形式转义/阻止了这个意思,所以它匹配一个字面句号。
任何时候你需要用分隔符来分割一个字符串,你应该考虑使用 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"
你可以使用 split (没有正则表达式)
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"
但是,在您的情况下,只需将字符串拆分.
就可以很好地满足您的需求
假设一个字符串总是包含一个这样的记录,使用这个:
^Sc_([^.]+)\.PKG_([^.]+)\.SP_([^$]+)$
...请注意,这会删除字符串的 Sc_、PKG_ 和 SP_ 部分,并且只返回“内容”。
出于测试目的,我创建了一个简单的JavaRegexTester应用程序来测试正则表达式。