Java 用正则表达式剪切文本

Java 用正则表达式剪切文本,java,regex,Java,Regex,我有如下示例数据: <o:-200> Text1 <o:7> Text2 <o:218> Text3 <o:325> Text4 这是我的密码: String s; Pattern p1 = Pattern.compile("<o:(-?[0-9]+)>"); Matcher m = p1.matcher("<o:-200> ABC\n<o:7> ASDQWE\n<o:218>

我有如下示例数据:

<o:-200> Text1
<o:7> Text2
<o:218> Text3
<o:325> Text4
这是我的密码:

    String s;
    Pattern p1 = Pattern.compile("<o:(-?[0-9]+)>");
    Matcher m = p1.matcher("<o:-200> ABC\n<o:7> ASDQWE\n<o:218> 12345.67\n<o:325> ASDFGD asdfsdf\n");
    StringBuffer s1 = new StringBuffer();
    while (m.find()){
        m.appendReplacement(s1, String.valueOf(100 + Integer.parseInt(m.group(1))));
    }
    s = s1.toString().replaceAll("<o:\\b(\\d+)\\b>", "$1" );
    System.out.println(s);
但我要整本书。ReplaceAll不起作用(更改找到第一个值的所有标记)


我该怎么做呢?

查看该方法的文档。它包含一个示例,清楚地显示缺少一行:

while(...) {...}
m.appendTail(s1); // <- this one
while(…){…}

m、 附录(s1);// 查看该方法的文档。它包含一个示例,清楚地显示缺少一行:

while(...) {...}
m.appendTail(s1); // <- this one
while(…){…}

m、 附录(s1);//好了,就这样!非常感谢。如果您将模式更改为
“()”
,并在m.group(2)上调用parseInt,则可以省去对replaceAll()的调用。好了,就是这样!非常感谢。如果将模式更改为
“()”
,并在m.group(2)上调用parseInt,则可以省去对replaceAll()的调用。
while(...) {...}
m.appendTail(s1); // <- this one