需要一点关于这个正则表达式的帮助

时间:2010-12-15 21:03:10

标签: java regex

我有一个看起来像这样的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可能在这里对我没什么帮助。 提前谢谢!

3 个答案:

答案 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不会中断字符串本身,而是返回另一个字符串。