在String.Split()中使用regex来提取java中{和}之间的文本

在String.Split()中使用regex来提取java中{和}之间的文本,java,regex,string,Java,Regex,String,我有这样一个字符串: String str = ${farsiName} - {symbolName} String in = "Item(s): [item1.test],[item2.qa],[item3.production]"; Pattern p = Pattern.compile("\\[(.*?)\\]"); Matcher m = p.matcher(in); while(m.find()) { System.out.println(m.group(1)); }

我有这样一个字符串:

String str = ${farsiName} - {symbolName}
String in = "Item(s): [item1.test],[item2.qa],[item3.production]";

Pattern p = Pattern.compile("\\[(.*?)\\]");
Matcher m = p.matcher(in);

while(m.find()) {
    System.out.println(m.group(1));
}
我想使用split方法用regex从这个字符串中查找并提取farsiName&symbolName。 我找到了这样的解决方案:

String str = ${farsiName} - {symbolName}
String in = "Item(s): [item1.test],[item2.qa],[item3.production]";

Pattern p = Pattern.compile("\\[(.*?)\\]");
Matcher m = p.matcher(in);

while(m.find()) {
    System.out.println(m.group(1));
}

但我想知道,我可以在String类中对split方法使用类似的正则表达式吗?

您的思路是正确的。只需更换括号和字符串

String n ="${farsiName} - {symbolName}";

Pattern p = Pattern.compile("\\{(.*?)\\}");
Matcher m = p.matcher(n);

while(m.find()) {
    System.out.println(m.group(1));
}

注意:我不建议这样做。正则表达式将更加通用和强大

String n ="${farsiName} - {symbolName}";
String s[] = n.split(" - ");
for(String x : s){
    System.out.println(x.replace("$", "").replace("{", "").replace("}", ""));
}

使用此代码。它会工作。但我建议使用regex。

是的,您可以使用相同的逻辑。谢谢,我这样做;但我在寻找分割法的相同方法。@GLinBoy为什么要这样做?这也是一个完美的解决方案。@Shashwat出于好奇@格林博伊贴出了答案。