查找带有数字的标签并将其替换为数字

时间:2015-01-27 10:44:07

标签: java regex xml

我想将整个标签替换为这些标签中的数字。

例如:

<o:15> My text.
<o:16> My new text.
<o:17> Another text.

更改为:

15 My text.
16 My new text.
17 Another text.

我可以通过<o:\\b\\d+\\b>表达式找到标记中的数字,但是如何替换所有标记并添加其数字?

4 个答案:

答案 0 :(得分:2)

您应该使用replaceAll类的String方法:

String newText = text.replaceAll("<o:\\b(\\d+)\\b>", "$1");

首先,我们围绕\d+设置大括号创建捕获组,然后我们在输出中使用此组。您可以阅读有关捕获组here的更多信息。

答案 1 :(得分:0)

试试这个:

System.out.println("15 My text.".replaceAll("<o:\\b(\\d+)\\b>", "$1"));

答案 2 :(得分:0)

使用正则表达式来解析或改变标记通常被认为是一个坏主意。

这就是说,您可以使用以下内容替换您的代码:

String text = "<o:15> My text.\r\n<o:16> My new text.\r\n<o:17> Another text.";
//                                  | start pattern
//                                  |  | group 1: any number of digits
//                                  |  |         | back reference
System.out.println(text.replaceAll("<o:(\\d+)>", "$1"));

<强>输出

15 My text.
16 My new text.
17 Another text.

答案 3 :(得分:0)

如果你已正确制作正则表达式,那么你只需要将正则表达式分组为

<o:(\\b\\d+\\b)> and just replace the whole regex with $1 

可以使用replaceAll