如何使用搜索&;替换Java中的自定义HTML标记?

如何使用搜索&;替换Java中的自定义HTML标记?,java,json,regex,Java,Json,Regex,我正在使用Java1.7 具有以下JSON响应(来自JSON数组),其中包含不同的标记(一个包含照片,另一个包含视频): { “条款”: [ { “htmlBody”:“\r\n有人看到安吉丽·朱莉和前男友布拉德·皮特在Wholefoods见面。\r\n \r\n-他们的大多数孩子都和他们在一起。\r\n \r\n“ }, { “htmlBody”:“\r\n 里斯·威瑟斯彭在巴黎机场被发现\n\n遗憾的是她是来拍摄她的新电影的\n\n\r\n“ },

我正在使用Java1.7

具有以下JSON响应(来自JSON数组),其中包含不同的标记(一个包含照片,另一个包含视频):

{
“条款”:
[
{
“htmlBody”:“\r\n有人看到安吉丽·朱莉和前男友布拉德·皮特在Wholefoods见面。\r\n
\r\n-他们的大多数孩子都和他们在一起。\r\n
\r\n“
},                      
{
“htmlBody”:“\r\n
里斯·威瑟斯彭在巴黎机场被发现\n\n遗憾的是她是来拍摄她的新电影的\n\n\r\n“
},
{
“htmlBody”:“\r\n有人看到马特·达蒙在波士顿步行去星巴克喝一杯快速拿铁和巧克力丹麦片。\r\n这是他亲切问候狗仔队的视频剪辑:\r\n”
}
]
}
在我的Java代码中,它是一个字符串

问题:

  • 谁能给我提供一个好的正则表达式查询(使用Java)来解析:

  • 以及:

    
    
    希望从照片或视频中提取id并存储到数据结构(例如HashMap)中,但需要能够找到一种机制,使用正则表达式在我的代码中搜索基于字符串的htmlBody以查找照片和视频

    一旦我将ID存储在正确的数据结构中:

    e、 g

    Map videoTags=newhashmap();
    Map photoTags=new HashMap();
    
    然后,我可以将这些标记替换为实际的(或包含实际资产的等效标记)

  • HashMap是存储这些特定资产ID的最佳方式吗(目的是或用实际资产的硬编码URL替换它们)
  • 如果您对正则表达式或设计有任何建议,我将不胜感激……如果正则表达式不是在Java中搜索特定自定义HTML标记(作为字符串)的可行解决方案,那么我还可以使用什么(在技术方面)?

    您可以使用它来解析HTML(通过任何属性、标记等)。下面是使用Jsoup的示例:


    @Tim-那么你是说除了使用正则表达式,没有其他方法可以搜索这两个不同的自定义HTML标记了?谢谢你的回复。如果id的长度相同,为什么不直接查找“id”的索引呢然后提取itIssam-我需要知道它是否属于视频或照片-这就是问题所在?提取后,我将把数据放在哪里(例如数据结构)?我不知道你是如何得出这个结论的。这根本不是我要说的,事实上我只共享了一个链接,该链接中的答案是不要使用正则表达式来处理html。谢谢,这太棒了!最后一个问题,如何使用JSoup替换为内部的确切位置(内联)来处理html?
    {
        "articles": 
        [
            {
                "htmlBody": "<asset-entity type=\"photo\" id=\"4806ad76-7433-fs34-50d1-b12bdbc308899ad\"></asset-entity>\r\nAngelie Jolie was seen at Wholefoods with ex-beau Brad Pitt.\r\n
                             <asset-entity type=\"photo\" id=\"4806fe7d-c175-c380-4ab2-dda068b42b033cbf\"></asset-entity>\r\n- The majority of their kids were with them.\r\n<asset-entity type=\"photo\" id=\"35064086-5d85-1866-4afc-a523c04c2b3e42a6\">
                             </asset-entity>\r\n"
            },                      
            {
                "htmlBody": "<asset-entity type=\"video\" id=\"48906fe30-8dx6-7e04-4b18-98c4d77176eaz412\"></asset-entity>\r\n
                            Reese Witherspoon was spotted at the Paris airport\n\nRumor is that she arrived for the filming of her new movie\n\n <asset-entity type=\"video\" id=\"4207182e-cgga-4e0a-4b97-a5ec0aa619c33b42\"></asset-entity>\r\n"
            },
            {
                "htmlBody": "<asset-entity type=\"photo\" id=\"350686a2-6fef-9fd7-445d-b2888fa56c3454da\"></asset-entity>\r\nMatt Damon was seen walking to StarBucks for a quick latte and chocalate danish while in Boston.\r\nHere's a video clip of him kindly greeting the paparazzi:<asset-entity type=\"video\" id=\"2507f140-ed4c-7e1b-4f44-8c57e051409d6fea\"></asset-entity>\r\n"
            }
       ]
    }
    
    <asset-entity type=\"photo\" id=\"48906fe30-8dx6-7e04-4b18-98c4d77176eaz412\"></asset-entity>
    
    Map<String> videoTags = new HashMap();
    Map<String> photoTags = new HashMap();
    
    String html = "<asset-entity type=\"photo\" id=\"4806ad76-7433-fs34-50d1-b12bdbc308899ad\">"
      + "</asset-entity>\r\nAngelie Jolie was seen at Wholefoods with ex-beau Brad Pitt.\r\n <asset-entity type=\"photo\" id=\"4806fe7d-c175-c380-4ab2-dda068b42b033cbf\">"
      + "</asset-entity>\r\n- The majority of their kids were with them.\r\n<asset-entity type=\"video\" id=\"35064086-5d85-1866-4afc-a523c04c2b3e42a6\"> </asset-entity>\r\n";
    
    Document doc = Jsoup.parse(html);
    Elements elements = doc.select("asset-entity[type=photo]");
    for (Element element : elements) {
      String type = element.attributes().get("type");
      String id = element.attributes().get("id");
      System.out.println(type + " " + id);
    }
    
    photo 4806ad76-7433-fs34-50d1-b12bdbc308899ad
    photo 4806fe7d-c175-c380-4ab2-dda068b42b033cbf