我想在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;
的替代方案。
答案 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
。