Java 通过[“”]提取之间的字符串
如何提取[]之间的字符串 我有[x],那么我如何才能只提取x并将其分配给a 变量 我试过这个: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(
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]中,那么我如何附加这些/呢