查找XML标记值的正确正则表达式-java

查找XML标记值的正确正则表达式-java,java,regex,xml,string,Java,Regex,Xml,String,我希望找到正确的正则表达式来获取xml标记的值,并将其替换为X。 此标签: <number>1234I0000ABC0001</number> 1234I0000ABC0001 我对regex的评价如下: .*number>([A-Z0-9 _]*[A-Z0-9][A-Z0-9 _]*)</ *number>([A-Z0-9.]*[A-Z0-9][A-Z0-9.]*)用正则表达式解析XML不是个好主意。但如果你坚持,那么你可以使用 ([\s\s]*?)

我希望找到正确的正则表达式来获取xml标记的值,并将其替换为
X
。 此标签:

<number>1234I0000ABC0001</number>
1234I0000ABC0001
我对regex的评价如下:

.*number>([A-Z0-9 _]*[A-Z0-9][A-Z0-9 _]*)</

*number>([A-Z0-9.]*[A-Z0-9][A-Z0-9.]*)用正则表达式解析XML不是个好主意。但如果你坚持,那么你可以使用

([\s\s]*?)

这将捕获值为
组1
。你可以很容易地用你喜欢的任何东西来代替它。有关详细说明,请访问此
在实景中

您可能会看到以下内容:

()(.+)()

(.+?)
我必须指出,它实际上不是一个数字:-)


这将是组(1)

不要使用正则表达式来解析XML,而是使用XML解析器。Java在标准库中对解析XML有着广泛的支持。我知道,但它需要将大XML解析为文档,这对我来说不是一个好的解决方案。这需要花费太多时间。请检查下面的链接是否有助于@allocer。这可能需要很长时间,但与正则表达式不同,它将为您提供正确答案。任何使用正则表达式的解决方案都会有错误。例如,此解决方案将为注释掉的
元素提供错误匹配,它将无法匹配开始标记中包含空格或命名空间声明的有效
元素,或值中的注释,并且如果XML文档使用外部实体或字符引用,它将完全失败。如果用户向您发送了您处理不当的有效文档,他们将不会感谢您(并且会提出大量问题)。我们受够了,这就是为什么我们建议你不要这样做。是的,你的解释是非常正确和合法的。因此,在第一行中,我就警告过它。但是@allocer问了一个关于Regex的具体问题,我认为这会给他指明一条路,他也会知道其中的陷阱。最后他可能知道什么最适合他。对不起,我的评论当然主要是针对OP,而不是你(@ShafinMahmud)
(<.+>)(.+)(</.+>)
<number>(.+?)</number>