如何在java中做正则表达式替换函数?

时间:2011-03-07 02:32:42

标签: java python regex

在python中,我可以在sub()中使用replacer函数,这在某些情况下非常强大,如下所示:

def replacer(match):
    s = match.group(0)
    if s.startswith('/'):
        return ""
    else:
        return s
return re.sub(pattern, replacer, text)

如何在Java中执行此操作?

2 个答案:

答案 0 :(得分:4)

在Java中,有一个成语:

Pattern pattern = Pattern.compile(yourPattern);
Matcher matcher = patern.matcher(yourString);
while (matcher.find()) {
  String group = matcher.group(0);
  // do your if statement
}

从文档中不易明白的一个提示 - 如果yourString中包含特殊(reg exp)字符,使用matcher.appendReplacement(stringBuffer)和matcher.appendTail(stringBuffer)来避免错误非常重要。

答案 1 :(得分:1)

你不能用Java做到这一点。

Matcher类中的replace *方法使用String参数指定替换。您要做的是需要使用不同签名的替换方法。

你甚至不能通过创建Matcher的子类来破解解决方案:它是最终的类。