Оптимизация регулярного выражения для соответствия области видимости - PullRequest
0 голосов
/ 03 июля 2019

Я недавно реализовал сигнатуру метода Java Regex ...

Мне удалось сопоставить большинство пространств имен, но как только я увеличил объем теста, он начал не соответствовать

Мне нужна помощь, чтобы настроить свое выражение в соответствии с перечисленными ниже случаями


Pattern  METHOD_PATTERN = Pattern
      .compile("^((((([a-zA-Z_$][a-zA-Z\\\\d_$]*\\.)*[a-zA-Z_$][a-zA-Z\\\\d_$]*)\\.([a-zA-Z_$][a-zA-Z\\\\d_$]*))\\.(<?[a-zA-Z_$][a-zA-Z\\\\d_$]*>?))\\.(<?[a-zA-Z_$][a-zA-Z\\\\d_$]*>?))+\\s*:\\s*(\\((.*)\\).+)");

//Test methods to match expression to 

// successfully matches pattern
java.util.TimeZone.getTimeZone : (Ljava.lang.String;)Ljava.util.TimeZone;

//fails to match pattern
org.apache.coyote.http2.Stream$StreamInputBuffer.doRead : (Lorg.apache.tomcat.util.net.ApplicationBufferHandler;)I, 
org.apache.coyote.http2.Stream$StreamOutputBuffer.end : ()V, 
org.apache.coyote.http2.Http2UpgradeHandler.startRequestBodyFrame : (II)Ljava.nio.ByteBuffer;, 
org.apache.coyote.http2.StreamProcessor.process : (Lorg.apache.tomcat.util.net.SocketEvent;)V, 
org.apache.coyote.http2.Stream.reserveWindowSize : (IZ)I, 
org.apache.coyote.http2.Http2UpgradeHandler.reprioritise : (IIZI)V, 
org.apache.coyote.http2.Stream.close : (Lorg.apache.coyote.http2.Http2Exception;)V, 
org.apache.coyote.http2.Http2UpgradeHandler.upgradeDispatch : (Lorg.apache.tomcat.util.net.SocketEvent;)Lorg.apache.tomcat.util.net.AbstractEndpoint$Handler$SocketState;, 
org.apache.coyote.http2.Http2UpgradeHandler.writeBody : (Lorg.apache.coyote.http2.Stream;Ljava.nio.ByteBuffer;IZ)V, 
org.apache.coyote.http2.Http2UpgradeHandler.setting : (Lorg.apache.coyote.http2.Setting;J)V, 
org.apache.coyote.http2.Http2UpgradeHandler.pingReceive : ([BZ)V


Буду признателен за помощь в корректировке выражения для расширения области соответствия

...