【问题标题】:How to extract specific text from string using Regex in JAVA如何在 JAVA 中使用正则表达式从字符串中提取特定文本
【发布时间】:2016-05-12 17:05:04
【问题描述】:

我有一个字符串 = '["Id","Lender","Type","Aging","Override"]'

我想从中提取字符串数组中的 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:正则表达式的新手)

【问题讨论】:

  • 请添加您尝试过的代码
  • 这看起来像一个 JSON 数组,因此 JSON 解析器将是一个不错的选择。
  • @Sanjeev 添加了!谢谢。
  • 我运行了你的代码,它正在做你想做的事情
  • 使用 JSON Parser 是解决这个问题的正确方法,您可以参考stackoverflow.com/questions/8264725/…

标签: java arrays regex string


【解决方案1】:

你可以做这样的事情。它首先删除"[ ]",然后拆分","

System.out.println(Arrays.toString(string.replaceAll("\\[(.*)\\]", "$1").split(",")));

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    但如果你的输入是,说:

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

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

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

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

    regex demo

    【讨论】:

    【解决方案3】:

    你的代码有效,我试过了,我得到了你想要的输出。

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

    【讨论】:

    • 谢谢,我更正了代码中的一个小错误。现在它正在工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2021-12-29
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    相关资源
    最近更新 更多