如何在JAVA中使用Regex从字符串中提取特定文本

时间:2016-05-12 17:05:05

标签: java arrays regex string

我有一个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的新手)

3 个答案:

答案 0 :(得分:1)

但是如果你输入的话,请说:

["Id","Lender","Ty\"pe","Aging","Override", "Override\\\\\"\""]

此正则表达式将捕获所有值,同时允许字符串中的那些(有效)转义引号\"和文字反斜杠\\

  • 正则表达式:"((?:\\\\|\\"|[^"])+)"

  • 或作为java字符串:"\"((?:\\\\\\\\|\\\\\"|[^\"])+)\""

regex demo

答案 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,它们不是单词的一部分。