我有一个看起来像这样的Java字符串,它实际上是一个XML标记:
"article-idref="527710" group="no" height="267" href="pc011018.pct" id="pc011018" idref="169419" print-rights="yes" product="wborc" rights="licensed" type="photo" width="322" "
现在我想通过使用正则表达式删除article-idref =“52770”段,我想出了以下内容:
trimedString.replaceAll("\\article-idref=.*?\"","");
但它似乎没有用,有人能让我知道我的正则表达式出错了吗?我需要将它表示为我的Java类中的String,所以HTMLParser可能在这里对我没什么帮助。 提前谢谢!
答案 0 :(得分:2)
试试这个:
trimedString.replaceAll("article-idref=\"[^\"]*\" *","");
答案 1 :(得分:1)
我通过添加引号和单词边界(以防止错误匹配)更正了正则表达式。此外,如果您没有,请记得在替换后重新分配给您的字符串:
trimmedString = trimmedString.replaceAll("\\barticle-idref=\".*?\"", "");
在ideone处查看它。
此外,由于这是来自XML文档,因此最好使用XML解析器来提取正确的属性而不是正则表达式。这是因为XML是一种非常复杂的数据格式,无法正确解析。你问题中的例子很简单。但是,正则表达式可能会破坏更复杂的情况,例如包含XML注释的文档。如果您从不受信任的来源读取数据,这可能是一个问题。
答案 2 :(得分:0)
如果您确定文章-idref在开始时总是尝试这个:
// removes everything from the beginning to the first whitespace
trimedString = trimedString.replaceFirst("^\\s","");
请务必再次将结果分配给trimedString,因为replace不会中断字符串本身,而是返回另一个字符串。