使用Java替换字符串中的模式

时间:2019-03-28 11:14:23

标签: java regex

我需要在字符串中的下一个逗号之前替换测试词。
例如,字符串为“ abc test xy, tmy test 1, vks , csb”;
替换后的输出应为“ abc , tmy, vks,csb”。
删除测试,后跟任何字符或数字,直到逗号为止。

我尝试了以下代码,但是没有用。

import java.sql.Timestamp;
import java.time.Instant;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class TESTREPLACE {

    public static void main(String[] args) {
        String str = "abc test   xy, tcs test  1, vks , csb ";

        String regex = " default.+\\,";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        System.out.println(matcher.replaceAll("\\,"));
    }
}

1 个答案:

答案 0 :(得分:2)

在您的示例中要求不是很明确,是否还需要在逗号后删除空格? 无论如何,此正则表达式与单词test匹配,后跟除逗号,之外的任何字符:(test[^,]+)replaceAll中使用它可以解决问题。

@Test
public void test() {
    final String input = "abc test xy, tmy test 1, vks , csb";
    final String expected = "abc , tmy , vks , csb";
    final String got = replaceTestWordUpToComma(input);
    assertEquals(expected, got);
}

private String replaceTestWordUpToComma(String input) {
    return input.replaceAll("test[^,]+", "");
}