Java使用replaceAll和转义字符串

标签 java xml regex string

晚安堆栈溢出!

今晚,我尝试从解析为字符串的 XML 中删除“ header ”,并使用 ReplaceAll 删除以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

来自字符串。因为它将与另一个 XML 字符串连接,所以离开它就会留下其中的两个。

所以我尝试了:

// getXML already has my XML.
getXML = getXML.replaceAll("<?xml version="1.0" encoding="UTF-8" standalone="no"?>", "");

由于字符串内部有“”,因此无法编译。然后我尝试使用转义序列:

String headerXMLString = ("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>");
getXML = getXML.replaceAll(headerXMLString, "");

这也失败了,当程序本身运行时,我假设由于转义符(\),它不会删除字符串

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

因为字符串在技术上是不一样的。

如何解决这个问题?非常感谢任何和所有的帮助。

最佳答案

不要使用replaceAll(),它会进行正则表达式搜索。
请改用 replace(),它使用纯文本搜索。

getXML = getXML.replace(headerXMLString, "");

请注意,尽管名称存在不幸的差异,replace() 仍然会替换找到的所有 出现的地方。

<小时/>

更好的方法是使用正则表达式来匹配 XML header ,无论它包含什么:

getXML = getXML("^<?xml.*?\\?>", "");

如果没有标题,这也不会执行任何操作。

关于Java使用replaceAll和转义字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23534131/

相关文章:

Java正则表达式查找其中没有句点的数字

java - @Resource 没有设置 javax.ejb.TimerService

java - 有人可以帮我从数据库中收取 SelectOneMenu 费用吗?

java - Spring 3.1中如何使用通配符加载xml资源文件

java - 在 JLabel 中用 int 换行的问题

安卓:Tabstyle

XML 架构迁移

xml - 将 Delphi 对象树序列化为 XML 的好方法是什么——使用 RTTI 而不是自定义代码?

mysql regex inverse(仅供 REGEXP 使用)

objective-c - 正则表达式(搜索函数(@"string content")以获取 "string content"