Java 通过[“”]提取之间的字符串

Java 通过[“”]提取之间的字符串,java,regex,string,jmeter,Java,Regex,String,Jmeter,如何提取[]之间的字符串 我有[x],那么我如何才能只提取x并将其分配给a 变量 我试过这个: String str = "[x]"; String result = str.substring(str.indexOf("[") + 1, str.indexOf("]")); 我可以使用上面的代码获得x,但我的字符串被括在[]之间。最简单的方法如下: String s = "aaaa [\"axas\"]"; String result = s.substring(s.indexOf(

如何提取[]之间的字符串 我有[x],那么我如何才能只提取x并将其分配给a 变量 我试过这个:

String str = "[x]";    
String result = str.substring(str.indexOf("[") + 1, str.indexOf("]"));

我可以使用上面的代码获得x,但我的字符串被括在[]之间。

最简单的方法如下:

String s = "aaaa [\"axas\"]";
String result = s.substring(s.indexOf("[\"")+2, s.indexOf("\"]"));
\表示字符-\是转义字符,是解决方案中缺少的部分

结果:

String is: ["foo"] and ["bar"]
Result: foo
Result: bar
结果:

String is: ["foo"] and ["bar"]
Result: foo
Result: bar

使用以下代码:

public static void main(final String[] args) {
    String in = "[ABC]";

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

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

这个regexp似乎可以工作:

final String regexpStr = "\\[\"(.*?)\"\\]";
针对it的JUnit测试:

@Test
public void regexp() {
    final String[] noMatch = { "", "[", "[\"", "]", "\"]", "\"[", "]\"", "asdf",
            "[\"asdfasdf\"", "asdf[sadf\"asdf\"]" };
    final String[] match = { "[\"one\"]", "asdf[\"one\"]", "[\"one\"]asdf", "asdf[\"one\"]asdf",
            "asdf[\"one\"]asdf[\"two\"]asdf" };
    final String regexpStr = "\\[\"(.*?)\"\\]";

    final Pattern pattern = Pattern.compile(regexpStr);
    for (final String s : noMatch) {
        final Matcher m = pattern.matcher(s);
        Assert.assertFalse(m.matches());
    }

    for (final String s : match) {
        final Matcher m = pattern.matcher(s);
        Assert.assertTrue(m.find());
        Assert.assertEquals(m.group(1), "one");
        if (m.find()) {
            Assert.assertEquals(m.group(1), "two");
        }
    }
}

你需要使用正则表达式吗?或者你能用@farrellmr替换[and]吗?字符串在[]之间,不仅仅是我指的是空字符串[x]。替换[,.replace];产生恐惧。括号内是引号。你的做法正好相反您的代码运行良好。但在我的情况下,x是一个json对象,我正在使用jmeter中的json路径提取器提取它,提取时的结果是name=[x]。既然提取时得到的结果仅在此模式[x]中,那么我如何附加这些/呢