根據您提供的數據,我提出了一個可以使用的正則表達式。以下是您可以運行的示例代碼,並看到它打印出您想要的結果。
public static void main(String[] args) {
List<String> dataList = new ArrayList<String>();
dataList.add("8G Kingston Single DDR3-1600 CL11 Desktop RAM (KVR16N11/8)");
dataList.add("8 Outlet Belkin Surge Protector With 2 Meter Cord");
dataList.add("0.5M Yellow CAT6 Network Cable");
dataList.add("100\" Intact 16x -R DVD");
dataList.add("15.6\" Topload Notebook (Black)");
dataList.add("120mm Aluminum Filter Silver");
dataList.add("8P TP-Link 10/100 Desktop Switch");
dataList.add("8Ware 0.5M CAT5E Network Cable");
dataList.add("Acer Aspire Alpha 12\" QHD IPS Display Intel Core i7 Touch Laptop");
dataList.add("ACER Aspire E5 15.6\" HD Intel Core i5 Laptop");
dataList.add("Asus SDRW-08D2S-U Slim External USB 2.0 DVD Read/Writer - Black");
System.out.println("Before:");
for (String s : dataList) {
System.out.println(s);
}
System.out.println();
System.out.println("After:");
for (String s : dataList) {
System.out.println(s.replaceAll("(^[0-9.]+[a-zA-Z\"]{0,2}\\s+)(.*)", "$2"));
}
}
以下是該程序在運行時的輸出,這正是您想要的。
Before:
8G Kingston Single DDR3-1600 CL11 Desktop RAM (KVR16N11/8)
8 Outlet Belkin Surge Protector With 2 Meter Cord
0.5M Yellow CAT6 Network Cable
100" Intact 16x -R DVD
15.6" Topload Notebook (Black)
120mm Aluminum Filter Silver
8P TP-Link 10/100 Desktop Switch
8Ware 0.5M CAT5E Network Cable
Acer Aspire Alpha 12" QHD IPS Display Intel Core i7 Touch Laptop
ACER Aspire E5 15.6" HD Intel Core i5 Laptop
Asus SDRW-08D2S-U Slim External USB 2.0 DVD Read/Writer - Black
After:
Kingston Single DDR3-1600 CL11 Desktop RAM (KVR16N11/8)
Outlet Belkin Surge Protector With 2 Meter Cord
Yellow CAT6 Network Cable
Intact 16x -R DVD
Topload Notebook (Black)
Aluminum Filter Silver
TP-Link 10/100 Desktop Switch
8Ware 0.5M CAT5E Network Cable
Acer Aspire Alpha 12" QHD IPS Display Intel Core i7 Touch Laptop
ACER Aspire E5 15.6" HD Intel Core i5 Laptop
Asus SDRW-08D2S-U Slim External USB 2.0 DVD Read/Writer - Black
就像我上面說的,我已經給了你一個基地正則表達式,你可以把它在你的實際數據基礎,如果萬一你有更多的調整,否則你是好了。
EDIT1:
確定的要求,在註釋,編輯的答案,包括正則表達式的解釋。
(^ [0-9。] + [A-ZA-Z \「] {0,2} \ S +)(。*)
正則表達式包括兩個部分:第一部分(^ [0 -9。] + [a-zA-Z \「] {0,2} \ s +)嘗試匹配測量值/量值數據。第二部分只是試圖匹配剩下的數據。僅僅將第一部分作爲第二部分(。*)進行詳細說明是非常簡單的。
(^ [0-9。] + [A-ZA-Z \「] {0,2} \ S +)
^- >是作爲測量數據是在數據的開始匹配該行的開頭
[0-9。] + - >匹配的數字在測量/量的數據的一個或多個可包括一個點字符
[A-ZA-Z \ 「] {0,2} - >這與數據單位(如G,M,mm)匹配,根據給定的數據可以有0到2的長度。例如,」8 Outlet ...「行沒有任何單位因此我必須使用{0,2},否則可能會使用{1,2}。爲避免匹配「8Ware ...」作爲測量數據,你不想匹配,我不得不將限制的上限限制爲2.
\ s +是在測量數據之後吃掉一個或多個空間。
所以整個正則表達式匹配,然後通過$ 2代替,這意味着僅由正則表達式的第二部分捕獲的數據(。*)
希望有所闡明。如果您需要進一步解釋任何部分,請告知我。
你已經嘗試過任何表達式嗎?請編輯你試過的問題,這樣我們可以幫忙,而不是爲你編寫正則表達式。 – Theo