将perl片段转换为java

时间:2015-06-28 06:26:05

标签: java regex perl

我想在java中重写一个perl代码:

sub validate_and_fix_regex {
    my $regex = $_[0];
    eval { qr/$regex/ };
    if ($@) {
        $regex = rquote($regex);
    }
    return $regex;
}

sub rquote {
    my $string = $_[0] || return;
    $string =~ s/([^A-Za-z_0-9 "'\\])/\\$1/g;
    return $string;
}

代码获取正则表达式并修复它,如果它有任何转义字符。我无法在java中找到eval { qr/$regex/ };$string =~ s/([^A-Za-z_0-9 "'\\])/\\$1/g;的替代方案。

1 个答案:

答案 0 :(得分:2)

  • 对于 ClientConfig config = new ClientConfig(); config.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); Client client = ClientBuilder.newClient(config); ... ,请查看Pattern.compile,如果给定的字符串不是有效的正则表达式,则会抛出PatternSyntaxException。
  • 对于qr,请查看String.replaceAll
  • s///在Java中被命名为try

全部放在一起:你想要在try-catch的主体中调用eval BLOCK。如果你捕获了PatternSyntaxExpression,你会调用rquote,并在那里使用Pattern.compile