2016-02-05 62 views
0

特定的字符串我有這樣的字符串:String test = "A1=CA2=BOA2=RA4=OA11=O";
現在我想這樣的輸出:A1,A2,A2,A4,A11提取從字符串中的Java

如果我的字符串,如:

String test = "[HEADER_1] [DATA] \n A10=T,(\"Re-N RO-25 M-N P-N (B)\"),1.0:0.8,R=25.0 F-7.829215,-4.032765 A20=B,R2,M=XY,R=29.999999999999996 F564.997550,669.454680"; 


public static void main(String[] args) { 
    String test = "A1=CA2=BOA2=RA4=O"; 
    String data[] = test.split("[A-a]\\d{1,100}="); 

    for (String str : data) { 
     System.out.println("Split data:"+str); 
    }  
} 

什麼是對的正則表達式?

+0

,你已經寫什麼是與代碼的問題? –

+0

您的輸出應該只包含從A開始或其他字母將在那裏lik B1,b2,BB1,AA1 –

回答

2

我不會用拆分爲。你想要的零件的正則表達式是/a\d+/i。如果您使用此和Create array of regex matches的解決方案收集列表中的所有匹配項,則可以輕鬆創建所需的輸出。

轉換的正則表達式中的Java-客廳:

public static void main(String[] args) { 
    String test = "A1=CA2=BOA2=RA4=OA11=O"; 
    List<String> allMatches = new ArrayList<String>(); 
    Matcher m = Pattern.compile("(a\\d+)", Pattern.CASE_INSENSITIVE).matcher(test); 

    while (m.find()) { 
     allMatches.add(m.group()); 
    } 
} 

allMatches現在包含A1 A2 A2 A4 A11

+2

我沒有投票給你,但我不會嘗試在這裏使用一個正則表達式。原因是正則表達式在無限數量的匹配情況下效果不佳,這正是OP所具有的。 –

+0

你能解釋一下你的意思嗎? –

+0

你的正則表達式不起作用,只是嘗試使用它。你最好先用'String.split()'進行匹配,然後再匹配每個部分。 –

0

您可能正在尋找的正則表達式是[A-a][0-9]{1,2}

在Java中

所以,

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 


String test = "A1=CA2=BOA2=RA4=OA11=O"; 
Matcher m = Pattern.compile("[A-a][0-9]{1,2}").matcher(test); 
while (m.find()) { 
    System.out.print(m.group(0)+","); 
} 
+0

A123不匹配 –

+0

@RahulBhawar。你絕對是對的!但是你沒有仔細閱讀這個問題,看看這不是一個用例。此外,破解正則表達式的OP有意匹配數字「1-100」。 – intboolstring

0
String test = "A1=CA2=BOA2=RA4=OA11=O"; 
String[] parts = test.split("="); 
String[] output = new String[parts.length]; 
for (int i=0; i < parts.length; ++i) { 
    output[i] = parts[i].replaceAll("^.*(A\\d*)$", "$1"); 
    System.out.println(parts[i] + " becomes " + output[i]); 
} 

輸出:

A1 becomes A1 
CA2 becomes A2 
BOA2 becomes A2 
RA4 becomes A4 
OA11 becomes A11 
O becomes O 
+0

「OA11變成OA11」 - 不應該將「OA11」轉到「A11」? – intboolstring

+0

@intboolstring良好的通話。您發佈得太快了,我沒有時間進行徹底測試^^ –

+0

我無法使用'='進行分割,因爲我的字符串包含多次'='。例如「A1 = C,R = 25A2 = BOA2 = RA4 = OA11 = 0」; –