单个模式中的多个匹配?

时间:2011-08-01 11:50:49

标签: java html regex

我有输入字符串,其字符串如下:

<image id="1234" caption="text1" alt="text2"> ......等等......

输入中可能有多个此类字符串的实例。

我想检索此类字符串的属性(标题,替代等)以及id,然后打印id,alt,caption等。可以有没有任何属性的图像,只是id。

请指教。

1 个答案:

答案 0 :(得分:3)

首先要做的事情是:Don't parse xml or [x]html with regex,这通常被认为不是一个好方法。

但我明白,对于快速+脏应用程序,您不希望处理第三方库。但是你必须考虑以下问题,这使得正则表达式变得更糟糕:

  • 您的xml有效还是包含“已损坏”标签?
  • 属性总是以相同的顺序排列吗?或caption有时会alt之前发生?
  • 您已经声明某些image标记只包含ID标记

这些(以及更多)方面决定了您的正则表达式解决方案的复杂性。 您需要一个双循环才能获得所有必需的数据。

  • 查找所有图片代码:(<image[^>]+)>(假设属性值中没有>个字符)
  • 然后,在您找到的image代码中,使用此代码:[ ]+([a-zA-Z0-9]+)="([^"]*)"

我希望你已经看到这是非常混乱的,并且没有涵盖所有有效xml 的情况!

xml解析器始终是正确的方法。

相关问题