我有一个输入字符串,它有如下字符串:
<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解析器始终是正确的方法。