单一模式下的多个匹配



我有一个输入字符串,它有如下字符串:

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

在输入中可以有多个这样的字符串实例。

我想检索属性(标题,alt等)这样的字符串与id一起,然后打印id, alt,标题等。图片可以没有任何属性,只有id。

请建议。

首先:不要用regex解析xml或[x]html,这通常被认为不是一种好方法。

但是我理解对于快速+脏的应用程序,你不想处理第三方库。但是您必须考虑以下问题,这些问题使regex成为更糟糕的方法:

  • 是你的xml有效或它包含"破碎"的标签?
  • 属性总是在相同的顺序?或者caption有时会在alt之前出现吗?
  • 您已经说过一些image标签只包含id标签

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

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

我希望您已经看到这是相当混乱的,并没有涵盖所有有效的xml的情况!

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

最新更新