在python中,我可以在sub()中使用replacer函数,这在某些情况下非常强大,如下所示:
def replacer(match):
s = match.group(0)
if s.startswith('/'):
return ""
else:
return s
return re.sub(pattern, replacer, text)
如何在Java中执行此操作?
答案 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的子类来破解解决方案:它是最终的类。