2016-02-05 59 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”; –