我的输入字符串包含如下字符串:
<image id="1234" caption="text1" alt="text2">
...等等等等...
输入中可以有多个此类字符串的实例。
我想检索该字符串的属性(标题、alt 等)以及 id,然后打印 id、alt、标题等。可以有没有任何属性而只有 id 的图像。
请指教。
最佳答案
首先要做的事情:Don't parse xml or [x]html with regex ,这通常被认为不是一个好方法。
但我知道,对于快速+肮脏的应用程序,您不想处理第 3 方库。但您必须考虑以下问题,这使得正则表达式成为更糟糕的方法:
- 您的 xml 有效还是包含“损坏”标签?
- 属性的顺序总是相同吗?或者
caption
有时出现在alt
之前有机会吗? - 您已经说过一些
image
标签只包含id标签
这些(以及更多)方面决定了正则表达式解决方案的复杂性。 您需要一个双循环才能获取所有所需的数据。
- 查找所有图像标签:
(<image[^>]+)>
(假设属性值中没有>
字符) - 然后,在
image
内您找到的标签,请使用:[ ]+([a-zA-Z0-9]+)="([^"]*)"
我希望您已经看到这非常困惑,并且没有涵盖有效 xml 的所有情况!
XML 解析器始终是正确的方法。
关于java - 单个模式中的多个匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6897999/