/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 - 2 0 1 9 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . time and space . j ps g Ċ Ċ import Ġjava . util . regex . Match Result Ċ import Ġjava . util . regex . Matcher Ċ import Ġjava . util . regex . Pattern ĊĊ Ċ class ĠChecking Matcher Ġprivate Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġinput : ĠCharSequence , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġchecking Matcher : ĠMatcher , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtarget Matcher : ĠMatcher ) Ġ: ĠMatch Result Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlast Append Position Ġ= Ġ 0 ĊĊĠĠĠ Ġfun Ġfind (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! checking Matcher . find ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġchecking Matcher . start () ĊĠĠĠĠĠĠĠ Ġif Ġ(! target Matcher . find ( start ) Ġ|| Ġtarget Matcher . start () Ġ!= Ġstart ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMal formed Template Exception . near ( input , Ġstart ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Matcher . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart ( group : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Matcher . start ( group ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġend (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Matcher . end () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġend ( group : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Matcher . end ( group ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgroup (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Matcher . group () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgroup ( group : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Matcher . group ( group ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgroup ( name : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Matcher . group ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgroup Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Matcher . group Count () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend Simple Replacement ( sb : ĠStringBuilder , Ġreplacement : ĠString ): ĠChecking Matcher Ġ{ ĊĠĠĠĠĠĠĠ Ġsb . append ( input , Ġlast Append Position , Ġtarget Matcher . start ()) ĊĠĠĠĠĠĠĠ Ġsb . append ( replacement ) ĊĠĠĠĠĠĠĠ Ġlast Append Position Ġ= Ġtarget Matcher . end () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend Tail ( sb : ĠStringBuilder ): ĠStringBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . append ( input , Ġlast Append Position , Ġinput . length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmatches (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Matcher . matches () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregion ( start : ĠInt , Ġend : ĠInt ): ĠChecking Matcher Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Append Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġchecking Matcher . region ( start , Ġend ) ĊĠĠĠĠĠĠĠ Ġtarget Matcher . region ( start , Ġend ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( input : ĠCharSequence , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchecking Pattern : ĠPattern , Ġtarget Pattern : ĠPattern ): ĠChecking Matcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠChecking Matcher ( input , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchecking Pattern . matcher ( input ), Ġtarget Pattern . matcher ( input )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ