我在我的android gradle项目中使用来自maven的merchant-sdk-java进行快速结账整合,我收到以下错误:
08-10 15:42:30.233 26631-26731/com.spec.paypalpoc W/System.err﹕ java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 15:
08-10 15:42:30.234 26631-26731/com.spec.paypalpoc W/System.err﹕ (?<!{[01]{1})}
08-10 15:42:30.234 26631-26731/com.spec.paypalpoc W/System.err﹕ ^
08-10 15:42:30.234 26631-26731/com.spec.paypalpoc W/System.err﹕ at java.util.regex.Pattern.compileImpl(Native Method)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at java.util.regex.Pattern.compile(Pattern.java:411)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at java.util.regex.Pattern.(Pattern.java:394)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at java.util.regex.Pattern.compile(Pattern.java:381)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at java.lang.String.replaceAll(String.java:1600)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at com.paypal.core.soap.MerchantAPICallPreHandler.processPayLoadForFormatting(MerchantAPICallPreHandler.java:466)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at com.paypal.core.soap.MerchantAPICallPreHandler.getPayLoadUsingSOAPHeader(MerchantAPICallPreHandler.java:447)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at com.paypal.core.soap.MerchantAPICallPreHandler.getPayLoad(MerchantAPICallPreHandler.java:317)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at com.paypal.core.BaseService.call(BaseService.java:264)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService.setExpressCheckout(PayPalAPIInterfaceServiceService.java:2196)
08-10 15:42:30.237 26631-26731/com.spec.paypalpoc W/System.err﹕ at urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService.setExpressCheckout(PayPalAPIInterfaceServiceService.java:2148)
所以基本上当我研究这个方法时:
/**
* Process the payload before using message formatting
*/
private String processPayLoadForFormatting(String payLoad) {
Matcher match = REGEX_PATTERN.matcher(payLoad);
StringBuffer sb = new StringBuffer();
while (match.find()) {
match.appendReplacement(sb, "'" + match.group());
}
match.appendTail(sb);
// Fix json strings in element values by replacing {
// by '{' and matching } by '}'
return sb.toString().replaceAll("(?<!\\{[01]{1})}", "'}' ")
.replaceAll("\\{(?![01]})", "'{' ");
}
我们需要在这一行中逃避“}”:
return sb.toString().replaceAll("(?<!\\{[01]{1})}", "'}' ")
.replaceAll("\\{(?![01]})", "'{' ");
在android转义中,“{,}”工作正常。 Android | Syntax Error in regexp pattern
如果有任何解决方法,请告诉我。
谢谢和问候,
Namrata Bagerwal。