Java相当于Perl的///运算符?

rei*_*eid 6 java regex perl

我有一些代码,我正在从Perl转换为Java.它大量使用正则表达式,包括s///运算符.我已经使用Perl很长一段时间了,我仍然习惯于Java的做事方式.特别是,Strings似乎更难以使用.有没有人知道或拥有完全实现的Java功能s///?所以它可以处理这样的事情,例如:

$newString =~ s/(\bi'?\b)/\U$1/g;
Run Code Online (Sandbox Code Playgroud)

(也许不是一个很好的例子,但你明白了.)谢谢.

Mic*_*vis 6

没有什么比这更整洁,但在Java中你可以使用String.replaceAll()或使用Pattern来做类似的事情:

Pattern p = Pattern.compile("(\bi'?\b)");

Matcher m = p.matcher(stringToReplace);
m.replaceAll("$1");
Run Code Online (Sandbox Code Playgroud)

检查Pattern文档以获取Java的正则表达式语法 - 它与Perl完全不重叠.


要获得大写,请查看Matcher.appendReplacement:

StringBuffer sb = new StringBuffer();
while (m.find()) {
    String uppercaseGroup = m.group(1).toUpperCase();
    m.appendReplacement(sb, uppercaseGroup);
}
m.appendTail();
Run Code Online (Sandbox Code Playgroud)

不像上面引用的jakarta-oro库那样接近Perl,但肯定有一些内置于库中的帮助.


Bar*_*ers 1

看一下 String 的ReplaceAll(...)方法。请注意,Java 不支持\U(大写)功能。