2012-08-16 74 views
1

例如,如果我有一個字符串"Sc_bookstore.PKG_book.SP_Harrypotter"Java正則表達式用'。'分隔字符串。

我該如何區分架構,包和StoredProc?即,我想他以下的輸出:

Sc_bookstore 
PKG_book 
SP_Harrypotter 

我將使用多個StoredProc調用這個表達式,和他們都遵循「SC_」「PKG_」「SP_」的標準

提前致謝!

+0

不要忘了接受的答案時,你就大功告成了:) – everton 2012-08-16 03:33:14

回答

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" 

但是,你的情況,只是通過.分割字符串會滿足您的需求很好

+0

嗨!這工作完美!謝謝! :) – user1602123 2012-08-17 00:58:52

5

如果需要正則表達式分隔符(與String.split一樣),則使用"\\.""[.]"

A . in Java regular expression表示「匹配任何字符」(大致取決於選項);上述兩種形式逃避/防止這種含義,因此它符合文字時期。

+0

感謝您的幫助:) – user1602123 2012-08-17 01:01:55

0

你可以使用拆分(無正則表達式)

String[] values; 
values = str.split("\\."); 
+4

不過它總是需要一個「正則表達式」(傳過來的字符串).. – 2012-08-16 03:12:43

+0

,沒錯.. :) – alpera 2012-08-16 03:13:25

+0

你的正則表達式是錯誤的。單一。將匹配你需要傳入的任何字符,因爲它是一個文件,你也需要跳過這個斜槓,這樣它就會變成\\。 – endy 2012-08-16 03:23:31

2

你需要一個分隔符來分割字符串中的任何時候,你應該考慮使用String split方法:

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" 
+0

這就是你想要的。 – endy 2012-08-16 03:22:37

+0

謝謝。這也工作。但我不得不使用完整的正則表達式來確保我只能得到一次Sc模式等。 – user1602123 2012-08-17 01:01:40

+0

然後,也許你應該在你的初始文章中提到的要求... – 2012-08-17 01:09:40

0

假設單個字符串始終只包含一個這樣的記錄,使用此:

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

...注意,這將刪除字符串,只有返回的SC_,PKG_和SP_零件「內容」。

爲了測試目的,我創建了一個簡單的JavaRegexTester應用程序來測試正則表達式。

+0

我其實需要Sc_等,但謝謝。 – user1602123 2012-08-17 01:00:02