Javaの正規表現を使用して例外から値を抽出しようとしています。しかし文字列は、(1行のすべての)あまりにも複雑で長い:JavaRegExと複雑な長い文字列
RETURNCODE = {ヴァル= 9002; SubVal = 9203;本文=サブスクライバが見つからない};見つからないメッセージ=サブスクライバ; LocalizedMessage =サブスクライバが見つかりません;原因== null; StackTrace = {[co.com.tigo.gatewaytigo.scp.mcommerce.method.RechargeMCommerce.getRechargeResult(RechargeMCommerce.java:72)] [co.com.tigo.gatewaytigo.scp.mcommerce.MCommerceAPI。充電(MCommerceAPI.java:353)] [co.com.tigo.gatewaytigo.scp.interfacesscp.SCPFacade.recharge(SCPFacade.java:257)] [co.com.tigo.gatewaytigo.webscp.ws.GatewayTigoWS.recharge(不明なソース)] [Sun.reflect.GeneratedMethodAccessor4092.invoke(不明なソース)] [Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)] [java.lang.reflect.Method.invoke(Method.java:597) ] [weblogic.wsee.jaxws.WLSInstanceResolver $ WLSInvoker.invoke (WLSInstanceResolver.java:89)][weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:71)][com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146) ] [com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)] [com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)] [ com.sun.xml.ws.api.pipe.Fiber .__ doRun(Fiber.java:598)] [com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)] [com。 sun.ws.api.pipe.Fiber.doRun(Fiber.java:542)] [com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)] [com.sun。 xml.ws.server.WSEndpointImpl $ 2.process(WSEndpointImpl.java:243)] [com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle(HttpAdapter.java:444)] [com.sun.xml .ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)] [com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:134)] [weblogic.wsee.jaxws .HttpServletAdapter $ AuthorizedInvoke.run(HttpServletAdapter.java:272)] [weblogic.wsee.jaxws.Http ServletAdapter.post(HttpServletAdapter.java:185)] [weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:180)] [javax.servlet.http.HttpServlet.service(HttpServletAdapter.java:727)] [weblogic。 wser.jaxws.JAXWSServlet.service(JAXWSServlet.java:64)] [javax.servlet.http.HttpServlet.service(HttpServlet.java:820)] [weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run(StubSecurityHelper.java: 227)] [weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)] [weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)] [weblogic.servlet.internal.ServletStubImpl.execute( ServletStubImpl.java:175)][weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3498)][weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)][weblogic。 (WebAppServletContext.java:2180)。 ] [weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)] [weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)] [weblogic.work.ExecuteThread.execute(ExecuteThread.java: 201)] [weblogic.work.ExecuteThread.run(ExecuteThread.java:173)]}
私はその文字列からヴァルとSubValを抽出したいと私のパターンがある:
^(?:(?:.|\\n|\\r)*)Val=(\\d+);SubVal=(\\d+)(?:(?:.)*)$
Iこの例外があります:
Exception in thread "main" java.lang.StackOverflowError
at java.lang.String.charAt(String.java:685)
at java.lang.Character.codePointAt(Character.java:2335)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3344)
at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3345)
at java.util.regex.Pattern$Branch.match(Pattern.java:4114)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)
at java.util.regex.Pattern$Loop.match(Pattern.java:4295)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
私はJava RegExを使って、その文字列からそのValとSubValの値を抽出しますか?
ヴァルとsubval場合常に数値であるので、 'Val ='と 'SubVal ='のインデックスに基づいて解析する方が良いでしょうし、終わりのポイントとして ';'を参照してください。 –
私はJavaの正規表現パターンを使用する必要があります – Barcelona