我有一个String = '["Id","Lender","Type","Aging","Override"]'
我想在String数组中提取Id,Lender,Type等。我试图使用正则表达式提取它,但模式不是删除“[”。
有人可以指导我。谢谢!
更新:我试过的代码,
Pattern pattern = Pattern.compile("\"(.+?)\"");
Matcher matcher = pattern.matcher(str);
List<String> list = new ArrayList<String>();
while (matcher.find()) {
// System.out.println(matcher.group(1));.
list.add(matcher.group(1));
(Ps:Regex的新手)
答案 0 :(得分:1)
但是如果你输入的话,请说:
["Id","Lender","Ty\"pe","Aging","Override", "Override\\\\\"\""]
此正则表达式将捕获所有值,同时允许字符串中的那些(有效)转义引号\"
和文字反斜杠\\
正则表达式:"((?:\\\\|\\"|[^"])+)"
或作为java字符串:"\"((?:\\\\\\\\|\\\\\"|[^\"])+)\""
答案 1 :(得分:1)
你可以这样做。它首先删除"[ ]"
,然后拆分","
System.out.println(Arrays.toString(string.replaceAll("\\[(.*)\\]", "$1").split(",")));
希望这有帮助。
答案 2 :(得分:1)
你的代码有效,我试过了,我得到了你想要的输出。
String line = "[\"Id\",\"Lender\",\"Type\",\"Aging\",\"Override\"]";
Pattern r = Pattern.compile("\"(.+?)\"");
List<String> result = new ArrayList<>();
// Now create matcher object.
Matcher m = r.matcher(line);
while (m.find( )) {
result.add(m.group(1));
}
System.out.println(result);
输出:
[Id, Lender, Type, Aging, Override]
显然方括号是因为我打印List
,它们不是单词的一部分。