使用java正则表达式处理标记标记

使用java正则表达式处理标记标记,java,regex,markup,Java,Regex,Markup,我收到了一个包含一些标记的文本。例如: Jane and Jack <record>went</record> to <record>cinema</record>. 简和杰克去看电影了。 我的目标是将这句话改为: 简和杰克从{blank}到{blank} 当我使用下面的 text.replaceAll("<record>.*</record>", "{blank}"); text.replaceAll(“.*”,“{bl

我收到了一个包含一些标记的文本。例如:

Jane and Jack <record>went</record> to <record>cinema</record>. 简和杰克去看电影了。 我的目标是将这句话改为:

简和杰克从{blank}到{blank}

当我使用下面的

text.replaceAll("<record>.*</record>", "{blank}");
text.replaceAll(“.*”,“{blank}”);
我收到的是“简和杰克{blank}”,而不是上面的句子

解决此问题的最佳方法是什么?

这应该可以做到:

text.replaceAll("<record>.*?</record>", "{blank}");
text.replaceAll(“*”,“{blank}”);
添加
使匹配“非贪婪”,因此它匹配的元素数最少,而不是最多


还请注意,处理这些类型的替换最好留给XML解析器,除非它们是简单的替换。

+1请注意,HTML/XML/SGML/etc不应使用正则表达式进行解析-我甚至提到了怎么做。