Advertisement
simonjtyler

Stringpattern = Regex?

Jan 23rd, 2012
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 51.53 KB | None | 0 0
  1. In[1]:= Trace[StringSplit["a. b.\tc","."~~Whitespace],TraceInternal->True]
  2. Out[1]= {StringSplit[a. b. c,.~~Whitespace],{StringPattern`PatternConvert[.~~Whitespace,None,0],Catch[Block[{StringPattern`Dump`n=1,StringPattern`Dump`vars={},StringPattern`Dump`conditions={},StringPattern`Dump`callout=1,StringPattern`Dump`$MatchQSyntax=0,StringPattern`Dump`capgroups={},StringPattern`Dump`pattvars,StringPattern`Dump`varsonly,StringPattern`Dump`heldrhs=Hold[None],StringPattern`Dump`new,StringPattern`Dump`res,StringPattern`Dump`perr,StringPattern`Dump`$Quantifier=,StringPattern`Dump`$FullSP=.~~Whitespace},Block[{StringPattern`Dump`res=.~~Whitespace/. StringPattern`Dump`ruleHoldPattern/. StringPattern`Dump`expandDatePattern/. StringPattern`Dump`rule0/. StringPattern`Dump`rule1/. StringPattern`Dump`rule1b/. StringPattern`Dump`rule2/. If[0>0,StringPattern`Dump`rule2b,{}]/. StringPattern`Dump`rule3},StringPattern`Dump`pattvars=DeleteCases[MapIndexed[{#1,#2[[1]]}&,StringPattern`Dump`vars],{Null,_}];StringPattern`Dump`varsonly=First/@StringPattern`Dump`pattvars;StringPattern`Dump`conditions=Function[StringPattern`Dump`cond,{StringPattern`Dump`cond[[1]],If[!ListQ[StringPattern`Dump`cond[[2]]],StringPattern`Dump`cond[[2]],(Position[StringPattern`Dump`pattvars,#1][[1,1]]&)/@StringPattern`Dump`cond[[2]]]}]/@StringPattern`Dump`conditions;StringPattern`Dump`res=StringPattern`Dump`res//. StringPattern`Dump`rules;If[StringQ[StringPattern`Dump`res],StringPattern`Dump`res=(?ms)<>StringPattern`Dump`res,With[{StringPattern`Dump`corepatt$=If[0>0&&Length[.~~Whitespace]>=3,Take[.~~Whitespace,{2,-2}],.~~Whitespace]/. StringPattern`Dump`ruleHoldPattern},StringPattern`Dump`new=First[Select[StringExpression@@Join[Cases[{StringPattern`Dump`corepatt$},StringExpression[___],\[Infinity]],{StringPattern`Dump`corepatt$}],!StringQ[(StringPattern`Dump`vars={};StringPattern`Dump`capgroups={};StringExpression[#1]/. StringPattern`Dump`expandDatePattern/. StringPattern`Dump`rule0/. StringPattern`Dump`rule1/. StringPattern`Dump`rule1b/. StringPattern`Dump`rule2/. If[0>0,StringPattern`Dump`rule2b,{}]/. StringPattern`Dump`rule3)//. StringPattern`Dump`rules]&,1]];Message[StringExpression::invld,StringPattern`Dump`new,StringPattern`Dump`corepatt$];Throw[$Failed];]];{StringPattern`Dump`res,StringPattern`Dump`pattvars,StringPattern`Dump`conditions,StringPattern`Dump`heldrhs}]]],{Block[{StringPattern`Dump`n=1,StringPattern`Dump`vars={},StringPattern`Dump`conditions={},StringPattern`Dump`callout=1,StringPattern`Dump`$MatchQSyntax=0,StringPattern`Dump`capgroups={},StringPattern`Dump`pattvars,StringPattern`Dump`varsonly,StringPattern`Dump`heldrhs=Hold[None],StringPattern`Dump`new,StringPattern`Dump`res,StringPattern`Dump`perr,StringPattern`Dump`$Quantifier=,StringPattern`Dump`$FullSP=.~~Whitespace},Block[{StringPattern`Dump`res=.~~Whitespace/. StringPattern`Dump`ruleHoldPattern/. StringPattern`Dump`expandDatePattern/. StringPattern`Dump`rule0/. StringPattern`Dump`rule1/. StringPattern`Dump`rule1b/. StringPattern`Dump`rule2/. If[0>0,StringPattern`Dump`rule2b,{}]/. StringPattern`Dump`rule3},StringPattern`Dump`pattvars=DeleteCases[MapIndexed[{#1,#2[[1]]}&,StringPattern`Dump`vars],{Null,_}];StringPattern`Dump`varsonly=First/@StringPattern`Dump`pattvars;StringPattern`Dump`conditions=Function[StringPattern`Dump`cond,{StringPattern`Dump`cond[[1]],If[!ListQ[StringPattern`Dump`cond[[2]]],StringPattern`Dump`cond[[2]],(Position[StringPattern`Dump`pattvars,#1][[1,1]]&)/@StringPattern`Dump`cond[[2]]]}]/@StringPattern`Dump`conditions;StringPattern`Dump`res=StringPattern`Dump`res//. StringPattern`Dump`rules;If[StringQ[StringPattern`Dump`res],StringPattern`Dump`res=(?ms)<>StringPattern`Dump`res,With[{StringPattern`Dump`corepatt$=If[0>0&&Length[.~~Whitespace]>=3,Take[.~~Whitespace,{2,-2}],.~~Whitespace]/. StringPattern`Dump`ruleHoldPattern},StringPattern`Dump`new=First[Select[StringExpression@@Join[Cases[{StringPattern`Dump`corepatt$},StringExpression[___],\[Infinity]],{StringPattern`Dump`corepatt$}],!StringQ[(StringPattern`Dump`vars={};StringPattern`Dump`capgroups={};StringExpression[#1]/. StringPattern`Dump`expandDatePattern/. StringPattern`Dump`rule0/. StringPattern`Dump`rule1/. StringPattern`Dump`rule1b/. StringPattern`Dump`rule2/. If[0>0,StringPattern`Dump`rule2b,{}]/. StringPattern`Dump`rule3)//. StringPattern`Dump`rules]&,1]];Message[StringExpression::invld,StringPattern`Dump`new,StringPattern`Dump`corepatt$];Throw[$Failed];]];{StringPattern`Dump`res,StringPattern`Dump`pattvars,StringPattern`Dump`conditions,StringPattern`Dump`heldrhs}]],{StringPattern`Dump`n=1,1},{StringPattern`Dump`vars={},{}},{StringPattern`Dump`conditions={},{}},{StringPattern`Dump`callout=1,1},{StringPattern`Dump`$MatchQSyntax=0,0},{StringPattern`Dump`capgroups={},{}},{StringPattern`Dump`heldrhs=Hold[None],Hold[None]},{StringPattern`Dump`$Quantifier=,},{StringPattern`Dump`$FullSP=.~~Whitespace,.~~Whitespace},{Block[{StringPattern`Dump`res=.~~Whitespace/. StringPattern`Dump`ruleHoldPattern/. StringPattern`Dump`expandDatePattern/. StringPattern`Dump`rule0/. StringPattern`Dump`rule1/. StringPattern`Dump`rule1b/. StringPattern`Dump`rule2/. If[0>0,StringPattern`Dump`rule2b,{}]/. StringPattern`Dump`rule3},StringPattern`Dump`pattvars=DeleteCases[MapIndexed[{#1,#2[[1]]}&,StringPattern`Dump`vars],{Null,_}];StringPattern`Dump`varsonly=First/@StringPattern`Dump`pattvars;StringPattern`Dump`conditions=Function[StringPattern`Dump`cond,{StringPattern`Dump`cond[[1]],If[!ListQ[StringPattern`Dump`cond[[2]]],StringPattern`Dump`cond[[2]],(Position[StringPattern`Dump`pattvars,#1][[1,1]]&)/@StringPattern`Dump`cond[[2]]]}]/@StringPattern`Dump`conditions;StringPattern`Dump`res=StringPattern`Dump`res//. StringPattern`Dump`rules;If[StringQ[StringPattern`Dump`res],StringPattern`Dump`res=(?ms)<>StringPattern`Dump`res,With[{StringPattern`Dump`corepatt$=If[0>0&&Length[.~~Whitespace]>=3,Take[.~~Whitespace,{2,-2}],.~~Whitespace]/. StringPattern`Dump`ruleHoldPattern},StringPattern`Dump`new=First[Select[StringExpression@@Join[Cases[{StringPattern`Dump`corepatt$},StringExpression[___],\[Infinity]],{StringPattern`Dump`corepatt$}],!StringQ[(StringPattern`Dump`vars={};StringPattern`Dump`capgroups={};StringExpression[#1]/. StringPattern`Dump`expandDatePattern/. StringPattern`Dump`rule0/. StringPattern`Dump`rule1/. StringPattern`Dump`rule1b/. StringPattern`Dump`rule2/. If[0>0,StringPattern`Dump`rule2b,{}]/. StringPattern`Dump`rule3)//. StringPattern`Dump`rules]&,1]];Message[StringExpression::invld,StringPattern`Dump`new,StringPattern`Dump`corepatt$];Throw[$Failed];]];{StringPattern`Dump`res,StringPattern`Dump`pattvars,StringPattern`Dump`conditions,StringPattern`Dump`heldrhs}],{{{{{{{{{StringPattern`Dump`ruleHoldPattern,{HoldPattern[HoldPattern][StringPattern`Dump`s_String]:>StringPattern`Dump`s,HoldPattern[HoldPattern][HoldPattern[StringJoin][StringPattern`Dump`s___String]]:>StringJoin[StringPattern`Dump`s],HoldPattern[HoldPattern][HoldPattern[Condition][StringPattern`Dump`s_,StringPattern`Dump`c_]]:>With[{StringPattern`Dump`res=StringPattern`Dump`s/;StringPattern`Dump`c},StringPattern`Dump`res/;True],HoldPattern[HoldPattern][HoldPattern[PatternTest][StringPattern`Dump`s_,StringPattern`Dump`c_]]:>(HoldPattern[StringPattern`Dump`s]/. StringPattern`Dump`ruleHoldPattern)?StringPattern`Dump`c,HoldPattern[HoldPattern][HoldPattern[Pattern][StringPattern`Dump`s_,StringPattern`Dump`p_]]:>StringPattern`Dump`s:(HoldPattern[StringPattern`Dump`p]/. StringPattern`Dump`ruleHoldPattern),StringPattern`Dump`x:HoldPattern[HoldPattern][StringPattern`Dump`h_[StringPattern`Dump`args___]]:>With[{StringPattern`Dump`res=With[{StringPattern`Dump`hh=Hold[StringPattern`Dump`h],StringPattern`Dump`hargs=Hold[StringPattern`Dump`args]},If[MemberQ[StringPattern`Dump`$StringPatternHeads,StringPattern`Dump`hh],StringPattern`Dump`h@@HoldPattern/@StringPattern`Dump`hargs/. StringPattern`Dump`ruleHoldPattern,StringPattern`Dump`x]]},StringPattern`Dump`res/;True],StringPattern`Dump`x:HoldPattern[HoldPattern][StringPattern`Dump`h_Symbol]:>With[{StringPattern`Dump`res=With[{StringPattern`Dump`hh=Hold[StringPattern`Dump`h]},If[MemberQ[StringPattern`Dump`$StringPatternObjects,StringPattern`Dump`hh],StringPattern`Dump`h,StringPattern`Dump`x]]},StringPattern`Dump`res/;True]}},.~~Whitespace/. {HoldPattern[HoldPattern][StringPattern`Dump`s_String]:>StringPattern`Dump`s,HoldPattern[HoldPattern][HoldPattern[StringJoin][StringPattern`Dump`s___String]]:>StringJoin[StringPattern`Dump`s],HoldPattern[HoldPattern][HoldPattern[Condition][StringPattern`Dump`s_,StringPattern`Dump`c_]]:>With[{StringPattern`Dump`res=StringPattern`Dump`s/;StringPattern`Dump`c},StringPattern`Dump`res/;True],HoldPattern[HoldPattern][HoldPattern[PatternTest][StringPattern`Dump`s_,StringPattern`Dump`c_]]:>(HoldPattern[StringPattern`Dump`s]/. StringPattern`Dump`ruleHoldPattern)?StringPattern`Dump`c,HoldPattern[HoldPattern][HoldPattern[Pattern][StringPattern`Dump`s_,StringPattern`Dump`p_]]:>StringPattern`Dump`s:(HoldPattern[StringPattern`Dump`p]/. StringPattern`Dump`ruleHoldPattern),StringPattern`Dump`x:HoldPattern[HoldPattern][StringPattern`Dump`h_[StringPattern`Dump`args___]]:>With[{StringPattern`Dump`res=With[{StringPattern`Dump`hh=Hold[StringPattern`Dump`h],StringPattern`Dump`hargs=Hold[StringPattern`Dump`args]},If[MemberQ[StringPattern`Dump`$StringPatternHeads,StringPattern`Dump`hh],StringPattern`Dump`h@@HoldPattern/@StringPattern`Dump`hargs/. StringPattern`Dump`ruleHoldPattern,StringPattern`Dump`x]]},StringPattern`Dump`res/;True],StringPattern`Dump`x:HoldPattern[HoldPattern][StringPattern`Dump`h_Symbol]:>With[{StringPattern`Dump`res=With[{StringPattern`Dump`hh=Hold[StringPattern`Dump`h]},If[MemberQ[StringPattern`Dump`$StringPatternObjects,StringPattern`Dump`hh],StringPattern`Dump`h,StringPattern`Dump`x]]},StringPattern`Dump`res/;True]},.~~Whitespace},{StringPattern`Dump`expandDatePattern,DatePattern[StringPattern`Dump`s__]:>StringPattern`Dump`FromDatePattern[StringPattern`Dump`s]},.~~Whitespace/. DatePattern[StringPattern`Dump`s__]:>StringPattern`Dump`FromDatePattern[StringPattern`Dump`s],.~~Whitespace},{StringPattern`Dump`rule0,HoldPattern[Condition][StringPattern`Dump`patt_,StringPattern`Dump`cond_]:>(AppendTo[StringPattern`Dump`conditions,StringPattern`Dump`ProcessCondition[StringPattern`Dump`patt,Hold[StringPattern`Dump`cond]]];StringPattern`Dump`CallOut[StringPattern`Dump`callout++,StringPattern`Dump`NCGDelayed[StringPattern`Dump`patt/. StringPattern`Dump`rule0]])},.~~Whitespace/. HoldPattern[Condition][StringPattern`Dump`patt_,StringPattern`Dump`cond_]:>(AppendTo[StringPattern`Dump`conditions,StringPattern`Dump`ProcessCondition[StringPattern`Dump`patt,Hold[StringPattern`Dump`cond]]];StringPattern`Dump`CallOut[StringPattern`Dump`callout++,StringPattern`Dump`NCGDelayed[StringPattern`Dump`patt/. StringPattern`Dump`rule0]]),{Function[Null,System`Private`VerbatimSameQ[Condition,#1],{HoldAllComplete}][StringExpression],System`Private`VerbatimSameQ[Condition,StringExpression],False},.~~Whitespace},{StringPattern`Dump`rule1,{StringPattern`Dump`pat:HoldPattern[Pattern][StringPattern`Dump`var_,StringPattern`Dump`bl_]:>With[{StringPattern`Dump`pos=Position[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]]},If[StringPattern`Dump`pos=!={},If[Length[StringPattern`Dump`bl]!=0||!MemberQ[{Blank,BlankSequence,BlankNullSequence},Head[StringPattern`Dump`bl]],Message[StringExpression::cond,StringPattern`Dump`var,StringPattern`Dump`pat]];StringPattern`Dump`BackRef[StringPattern`Dump`pos[[1,1]]],If[!MatchQ[Hold[StringPattern`Dump`var],Hold[_Symbol]],Message[Pattern::patvar,StringPattern`Dump`pat];Throw[$Failed]];AppendTo[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]];With[{StringPattern`Dump`ncurr=StringPattern`Dump`n,StringPattern`Dump`res=StringPattern`Dump`CapGr[StringPattern`Dump`n++,StringPattern`Dump`bl/. StringPattern`Dump`rule1]},AppendTo[StringPattern`Dump`capgroups,StringPattern`Dump`ncurr];StringPattern`Dump`res]]],HoldPattern[PatternTest][StringPattern`Dump`patt_,StringPattern`Dump`test_]:>(AppendTo[StringPattern`Dump`conditions,{Hold[StringPattern`Dump`test],StringPattern`Dump`n}];AppendTo[StringPattern`Dump`vars,Null];StringPattern`Dump`CallOut[StringPattern`Dump`callout++,StringPattern`Dump`UnnamedCapGr[StringPattern`Dump`n++,StringPattern`Dump`patt/. StringPattern`Dump`rule1]]),RegularExpression[StringPattern`Dump`s_String]:>With[{StringPattern`Dump`num=StringPattern`CountCapGrInRegExp[StringPattern`Dump`s]},If[StringPattern`Dump`num==-1,Throw[$Failed]];StringPattern`Dump`n+=StringPattern`Dump`num;StringPattern`Dump`vars=Join[StringPattern`Dump`vars,Table[Null,{StringPattern`Dump`num}]];StringPattern`Dump`RE[StringPattern`Dump`s]]},{StringPattern`Dump`pat:HoldPattern[Pattern][StringPattern`Dump`var_,StringPattern`Dump`bl_]:>With[{StringPattern`Dump`pos=Position[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]]},If[StringPattern`Dump`pos=!={},If[Length[StringPattern`Dump`bl]!=0||!MemberQ[{Blank,BlankSequence,BlankNullSequence},Head[StringPattern`Dump`bl]],Message[StringExpression::cond,StringPattern`Dump`var,StringPattern`Dump`pat]];StringPattern`Dump`BackRef[StringPattern`Dump`pos[[1,1]]],If[!MatchQ[Hold[StringPattern`Dump`var],Hold[_Symbol]],Message[Pattern::patvar,StringPattern`Dump`pat];Throw[$Failed]];AppendTo[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]];With[{StringPattern`Dump`ncurr=StringPattern`Dump`n,StringPattern`Dump`res=StringPattern`Dump`CapGr[StringPattern`Dump`n++,StringPattern`Dump`bl/. StringPattern`Dump`rule1]},AppendTo[StringPattern`Dump`capgroups,StringPattern`Dump`ncurr];StringPattern`Dump`res]]],StringPattern`Dump`pat:HoldPattern[Pattern][StringPattern`Dump`var_,StringPattern`Dump`bl_]:>With[{StringPattern`Dump`pos=Position[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]]},If[StringPattern`Dump`pos=!={},If[Length[StringPattern`Dump`bl]!=0||!MemberQ[{Blank,BlankSequence,BlankNullSequence},Head[StringPattern`Dump`bl]],Message[StringExpression::cond,StringPattern`Dump`var,StringPattern`Dump`pat]];StringPattern`Dump`BackRef[StringPattern`Dump`pos[[1,1]]],If[!MatchQ[Hold[StringPattern`Dump`var],Hold[_Symbol]],Message[Pattern::patvar,StringPattern`Dump`pat];Throw[$Failed]];AppendTo[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]];With[{StringPattern`Dump`ncurr=StringPattern`Dump`n,StringPattern`Dump`res=StringPattern`Dump`CapGr[StringPattern`Dump`n++,StringPattern`Dump`bl/. StringPattern`Dump`rule1]},AppendTo[StringPattern`Dump`capgroups,StringPattern`Dump`ncurr];StringPattern`Dump`res]]]},{HoldPattern[PatternTest][StringPattern`Dump`patt_,StringPattern`Dump`test_]:>(AppendTo[StringPattern`Dump`conditions,{Hold[StringPattern`Dump`test],StringPattern`Dump`n}];AppendTo[StringPattern`Dump`vars,Null];StringPattern`Dump`CallOut[StringPattern`Dump`callout++,StringPattern`Dump`UnnamedCapGr[StringPattern`Dump`n++,StringPattern`Dump`patt/. StringPattern`Dump`rule1]]),HoldPattern[PatternTest][StringPattern`Dump`patt_,StringPattern`Dump`test_]:>(AppendTo[StringPattern`Dump`conditions,{Hold[StringPattern`Dump`test],StringPattern`Dump`n}];AppendTo[StringPattern`Dump`vars,Null];StringPattern`Dump`CallOut[StringPattern`Dump`callout++,StringPattern`Dump`UnnamedCapGr[StringPattern`Dump`n++,StringPattern`Dump`patt/. StringPattern`Dump`rule1]])},{RegularExpression[StringPattern`Dump`s_String]:>With[{StringPattern`Dump`num=StringPattern`CountCapGrInRegExp[StringPattern`Dump`s]},If[StringPattern`Dump`num==-1,Throw[$Failed]];StringPattern`Dump`n+=StringPattern`Dump`num;StringPattern`Dump`vars=Join[StringPattern`Dump`vars,Table[Null,{StringPattern`Dump`num}]];StringPattern`Dump`RE[StringPattern`Dump`s]],RegularExpression[StringPattern`Dump`s_String]:>With[{StringPattern`Dump`num=StringPattern`CountCapGrInRegExp[StringPattern`Dump`s]},If[StringPattern`Dump`num==-1,Throw[$Failed]];StringPattern`Dump`n+=StringPattern`Dump`num;StringPattern`Dump`vars=Join[StringPattern`Dump`vars,Table[Null,{StringPattern`Dump`num}]];StringPattern`Dump`RE[StringPattern`Dump`s]]},{StringPattern`Dump`pat:HoldPattern[Pattern][StringPattern`Dump`var_,StringPattern`Dump`bl_]:>With[{StringPattern`Dump`pos=Position[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]]},If[StringPattern`Dump`pos=!={},If[Length[StringPattern`Dump`bl]!=0||!MemberQ[{Blank,BlankSequence,BlankNullSequence},Head[StringPattern`Dump`bl]],Message[StringExpression::cond,StringPattern`Dump`var,StringPattern`Dump`pat]];StringPattern`Dump`BackRef[StringPattern`Dump`pos[[1,1]]],If[!MatchQ[Hold[StringPattern`Dump`var],Hold[_Symbol]],Message[Pattern::patvar,StringPattern`Dump`pat];Throw[$Failed]];AppendTo[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]];With[{StringPattern`Dump`ncurr=StringPattern`Dump`n,StringPattern`Dump`res=StringPattern`Dump`CapGr[StringPattern`Dump`n++,StringPattern`Dump`bl/. StringPattern`Dump`rule1]},AppendTo[StringPattern`Dump`capgroups,StringPattern`Dump`ncurr];StringPattern`Dump`res]]],HoldPattern[PatternTest][StringPattern`Dump`patt_,StringPattern`Dump`test_]:>(AppendTo[StringPattern`Dump`conditions,{Hold[StringPattern`Dump`test],StringPattern`Dump`n}];AppendTo[StringPattern`Dump`vars,Null];StringPattern`Dump`CallOut[StringPattern`Dump`callout++,StringPattern`Dump`UnnamedCapGr[StringPattern`Dump`n++,StringPattern`Dump`patt/. StringPattern`Dump`rule1]]),RegularExpression[StringPattern`Dump`s_String]:>With[{StringPattern`Dump`num=StringPattern`CountCapGrInRegExp[StringPattern`Dump`s]},If[StringPattern`Dump`num==-1,Throw[$Failed]];StringPattern`Dump`n+=StringPattern`Dump`num;StringPattern`Dump`vars=Join[StringPattern`Dump`vars,Table[Null,{StringPattern`Dump`num}]];StringPattern`Dump`RE[StringPattern`Dump`s]]}},.~~Whitespace/. {StringPattern`Dump`pat:HoldPattern[Pattern][StringPattern`Dump`var_,StringPattern`Dump`bl_]:>With[{StringPattern`Dump`pos=Position[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]]},If[StringPattern`Dump`pos=!={},If[Length[StringPattern`Dump`bl]!=0||!MemberQ[{Blank,BlankSequence,BlankNullSequence},Head[StringPattern`Dump`bl]],Message[StringExpression::cond,StringPattern`Dump`var,StringPattern`Dump`pat]];StringPattern`Dump`BackRef[StringPattern`Dump`pos[[1,1]]],If[!MatchQ[Hold[StringPattern`Dump`var],Hold[_Symbol]],Message[Pattern::patvar,StringPattern`Dump`pat];Throw[$Failed]];AppendTo[StringPattern`Dump`vars,Hold[StringPattern`Dump`var]];With[{StringPattern`Dump`ncurr=StringPattern`Dump`n,StringPattern`Dump`res=StringPattern`Dump`CapGr[StringPattern`Dump`n++,StringPattern`Dump`bl/. StringPattern`Dump`rule1]},AppendTo[StringPattern`Dump`capgroups,StringPattern`Dump`ncurr];StringPattern`Dump`res]]],HoldPattern[PatternTest][StringPattern`Dump`patt_,StringPattern`Dump`test_]:>(AppendTo[StringPattern`Dump`conditions,{Hold[StringPattern`Dump`test],StringPattern`Dump`n}];AppendTo[StringPattern`Dump`vars,Null];StringPattern`Dump`CallOut[StringPattern`Dump`callout++,StringPattern`Dump`UnnamedCapGr[StringPattern`Dump`n++,StringPattern`Dump`patt/. StringPattern`Dump`rule1]]),RegularExpression[StringPattern`Dump`s_String]:>With[{StringPattern`Dump`num=StringPattern`CountCapGrInRegExp[StringPattern`Dump`s]},If[StringPattern`Dump`num==-1,Throw[$Failed]];StringPattern`Dump`n+=StringPattern`Dump`num;StringPattern`Dump`vars=Join[StringPattern`Dump`vars,Table[Null,{StringPattern`Dump`num}]];StringPattern`Dump`RE[StringPattern`Dump`s]]},{Function[Null,System`Private`VerbatimSameQ[Pattern,#1],{HoldAllComplete}][StringExpression],System`Private`VerbatimSameQ[Pattern,StringExpression],False},{Function[Null,System`Private`VerbatimSameQ[PatternTest,#1],{HoldAllComplete}][StringExpression],System`Private`VerbatimSameQ[PatternTest,StringExpression],False},.~~Whitespace},{StringPattern`Dump`rule1b,{(StringPattern`Dump`h:HoldPattern[Repeated]|HoldPattern[RepeatedNull])[StringPattern`Dump`a_,StringPattern`Dump`b_]:>StringPattern`Dump`h[StringPattern`Dump`a/. StringPattern`Dump`rule1b,StringPattern`Dump`b],{}:>Alternatives[],(List|Alternatives)[StringPattern`Dump`a_]:>(StringPattern`Dump`a/. StringPattern`Dump`rule1b),(List|Alternatives)[StringPattern`Dump`a__]:>If[Catch[(If[!StringPattern`Dump`SingleCharacterQ[#1],Throw[False]]&)/@{StringPattern`Dump`a};True],StringPattern`Dump`CharacterGroup[StringPattern`Dump`a],Alternatives@@(StringPattern`Dump`tmp[StringPattern`Dump`a]/. StringPattern`Dump`rule1b)]},{(StringPattern`Dump`h:HoldPattern[Repeated]|HoldPattern[RepeatedNull])[StringPattern`Dump`a_,StringPattern`Dump`b_]:>StringPattern`Dump`h[StringPattern`Dump`a/. StringPattern`Dump`rule1b,StringPattern`Dump`b],(StringPattern`Dump`h:HoldPattern[Repeated]|HoldPattern[RepeatedNull])[StringPattern`Dump`a_,StringPattern`Dump`b_]:>StringPattern`Dump`h[StringPattern`Dump`a/. StringPattern`Dump`rule1b,StringPattern`Dump`b]},{{}:>Alternatives[],{}:>Alternatives[]},{(List|Alternatives)[StringPattern`Dump`a_]:>(StringPattern`Dump`a/. StringPattern`Dump`rule1b),(List|Alternatives)[StringPattern`Dump`a_]:>(StringPattern`Dump`a/. StringPattern`Dump`rule1b)},{(List|Alternatives)[StringPattern`Dump`a__]:>If[Catch[(If[!StringPattern`Dump`SingleCharacterQ[#1],Throw[False]]&)/@{StringPattern`Dump`a};True],StringPattern`Dump`CharacterGroup[StringPattern`Dump`a],Alternatives@@(StringPattern`Dump`tmp[StringPattern`Dump`a]/. StringPattern`Dump`rule1b)],(List|Alternatives)[StringPattern`Dump`a__]:>If[Catch[(If[!StringPattern`Dump`SingleCharacterQ[#1],Throw[False]]&)/@{StringPattern`Dump`a};True],StringPattern`Dump`CharacterGroup[StringPattern`Dump`a],Alternatives@@(StringPattern`Dump`tmp[StringPattern`Dump`a]/. StringPattern`Dump`rule1b)]},{(StringPattern`Dump`h:HoldPattern[Repeated]|HoldPattern[RepeatedNull])[StringPattern`Dump`a_,StringPattern`Dump`b_]:>StringPattern`Dump`h[StringPattern`Dump`a/. StringPattern`Dump`rule1b,StringPattern`Dump`b],{}:>Alternatives[],(List|Alternatives)[StringPattern`Dump`a_]:>(StringPattern`Dump`a/. StringPattern`Dump`rule1b),(List|Alternatives)[StringPattern`Dump`a__]:>If[Catch[(If[!StringPattern`Dump`SingleCharacterQ[#1],Throw[False]]&)/@{StringPattern`Dump`a};True],StringPattern`Dump`CharacterGroup[StringPattern`Dump`a],Alternatives@@(StringPattern`Dump`tmp[StringPattern`Dump`a]/. StringPattern`Dump`rule1b)]}},.~~Whitespace/. {(StringPattern`Dump`h:HoldPattern[Repeated]|HoldPattern[RepeatedNull])[StringPattern`Dump`a_,StringPattern`Dump`b_]:>StringPattern`Dump`h[StringPattern`Dump`a/. StringPattern`Dump`rule1b,StringPattern`Dump`b],{}:>Alternatives[],(List|Alternatives)[StringPattern`Dump`a_]:>(StringPattern`Dump`a/. StringPattern`Dump`rule1b),(List|Alternatives)[StringPattern`Dump`a__]:>If[Catch[(If[!StringPattern`Dump`SingleCharacterQ[#1],Throw[False]]&)/@{StringPattern`Dump`a};True],StringPattern`Dump`CharacterGroup[StringPattern`Dump`a],Alternatives@@(StringPattern`Dump`tmp[StringPattern`Dump`a]/. StringPattern`Dump`rule1b)]},{Function[Null,System`Private`VerbatimSameQ[Repeated,#1],{HoldAllComplete}][StringExpression],System`Private`VerbatimSameQ[Repeated,StringExpression],False},{Function[Null,System`Private`VerbatimSameQ[RepeatedNull,#1],{HoldAllComplete}][StringExpression],System`Private`VerbatimSameQ[RepeatedNull,StringExpression],False},.~~Whitespace},{StringPattern`Dump`rule2,{StringPattern`Dump`a:(StringPattern`Dump`CharacterGroup|StringPattern`Dump`RE|Except)[___]:>StringPattern`Dump`a,StringPattern`Dump`s_String:>StringReplace[StringPattern`Dump`s,StringPattern`Dump`$RegExpSpecialCharacters]},{StringPattern`Dump`a:(StringPattern`Dump`CharacterGroup|StringPattern`Dump`RE|Except)[___]:>StringPattern`Dump`a,StringPattern`Dump`a:(StringPattern`Dump`CharacterGroup|StringPattern`Dump`RE|Except)[___]:>StringPattern`Dump`a},{StringPattern`Dump`s_String:>StringReplace[StringPattern`Dump`s,StringPattern`Dump`$RegExpSpecialCharacters],StringPattern`Dump`s_String:>StringReplace[StringPattern`Dump`s,StringPattern`Dump`$RegExpSpecialCharacters]},{StringPattern`Dump`a:(StringPattern`Dump`CharacterGroup|StringPattern`Dump`RE|Except)[___]:>StringPattern`Dump`a,StringPattern`Dump`s_String:>StringReplace[StringPattern`Dump`s,StringPattern`Dump`$RegExpSpecialCharacters]}},.~~Whitespace/. {StringPattern`Dump`a:(StringPattern`Dump`CharacterGroup|StringPattern`Dump`RE|Except)[___]:>StringPattern`Dump`a,StringPattern`Dump`s_String:>StringReplace[StringPattern`Dump`s,StringPattern`Dump`$RegExpSpecialCharacters]},StringReplace[.,StringPattern`Dump`$RegExpSpecialCharacters]~~Whitespace,{{StringPattern`Dump`$RegExpSpecialCharacters,{.->\.,\->\\,?->\?,(->\(,)->\),{->\{,}->\},[->\[,]->\],^->\^,$->\$,*->\*,+->\+,|->\|,\.00->\000}},StringReplace[.,{.->\.,\->\\,?->\?,(->\(,)->\),{->\{,}->\},[->\[,]->\],^->\^,$->\$,*->\*,+->\+,|->\|,\.00->\000}],\.},\.~~Whitespace},{{0>0,False},If[False,StringPattern`Dump`rule2b,{}],{}},\.~~Whitespace/. {},\.~~Whitespace},{StringPattern`Dump`rule3,(StringPattern`Dump`h:HoldPattern[Repeated]|HoldPattern[RepeatedNull])[StringPattern`Dump`d_,StringPattern`Dump`r_:StringPattern`Dump`none]:>Module[{StringPattern`Dump`reprange=StringPattern`Dump`GetRepeatedRange[StringPattern`Dump`h,StringPattern`Dump`r,StringPattern`Dump`h[StringPattern`Dump`d,StringPattern`Dump`r]]},If[StringPattern`Dump`reprange===$Failed,$Failed,StringPattern`Dump`SP[If[!FreeQ[StringPattern`Dump`d,StringPattern`Dump`CapGr],StringPattern`Dump`reprange[[2]]--;If[StringPattern`Dump`reprange[[1]]>0,StringPattern`Dump`reprange[[1]]--;StringPattern`Dump`d/. StringPattern`Dump`rule3,StringPattern`Dump`QuestionMark[StringPattern`Dump`d/. StringPattern`Dump`rule3]],],StringPattern`Dump`RepeatedObject[StringPattern`Dump`d/. StringPattern`Dump`rule3/. StringPattern`Dump`CapGr[StringPattern`Dump`n_,StringPattern`Dump`s_]:>StringPattern`Dump`BackRef[StringPattern`Dump`n],If[StringPattern`Dump`r===StringPattern`Dump`none,StringPattern`Dump`reprange[[1]],StringPattern`Dump`reprange]]]]],(StringPattern`Dump`h:HoldPattern[Repeated]|HoldPattern[RepeatedNull])[StringPattern`Dump`d_,StringPattern`Dump`r_:StringPattern`Dump`none]:>Module[{StringPattern`Dump`reprange=StringPattern`Dump`GetRepeatedRange[StringPattern`Dump`h,StringPattern`Dump`r,StringPattern`Dump`h[StringPattern`Dump`d,StringPattern`Dump`r]]},If[StringPattern`Dump`reprange===$Failed,$Failed,StringPattern`Dump`SP[If[!FreeQ[StringPattern`Dump`d,StringPattern`Dump`CapGr],StringPattern`Dump`reprange[[2]]--;If[StringPattern`Dump`reprange[[1]]>0,StringPattern`Dump`reprange[[1]]--;StringPattern`Dump`d/. StringPattern`Dump`rule3,StringPattern`Dump`QuestionMark[StringPattern`Dump`d/. StringPattern`Dump`rule3]],],StringPattern`Dump`RepeatedObject[StringPattern`Dump`d/. StringPattern`Dump`rule3/. StringPattern`Dump`CapGr[StringPattern`Dump`n_,StringPattern`Dump`s_]:>StringPattern`Dump`BackRef[StringPattern`Dump`n],If[StringPattern`Dump`r===StringPattern`Dump`none,StringPattern`Dump`reprange[[1]],StringPattern`Dump`reprange]]]]]},\.~~Whitespace/. (StringPattern`Dump`h:HoldPattern[Repeated]|HoldPattern[RepeatedNull])[StringPattern`Dump`d_,StringPattern`Dump`r_:StringPattern`Dump`none]:>Module[{StringPattern`Dump`reprange=StringPattern`Dump`GetRepeatedRange[StringPattern`Dump`h,StringPattern`Dump`r,StringPattern`Dump`h[StringPattern`Dump`d,StringPattern`Dump`r]]},If[StringPattern`Dump`reprange===$Failed,$Failed,StringPattern`Dump`SP[If[!FreeQ[StringPattern`Dump`d,StringPattern`Dump`CapGr],StringPattern`Dump`reprange[[2]]--;If[StringPattern`Dump`reprange[[1]]>0,StringPattern`Dump`reprange[[1]]--;StringPattern`Dump`d/. StringPattern`Dump`rule3,StringPattern`Dump`QuestionMark[StringPattern`Dump`d/. StringPattern`Dump`rule3]],],StringPattern`Dump`RepeatedObject[StringPattern`Dump`d/. StringPattern`Dump`rule3/. StringPattern`Dump`CapGr[StringPattern`Dump`n_,StringPattern`Dump`s_]:>StringPattern`Dump`BackRef[StringPattern`Dump`n],If[StringPattern`Dump`r===StringPattern`Dump`none,StringPattern`Dump`reprange[[1]],StringPattern`Dump`reprange]]]]],{Function[Null,System`Private`VerbatimSameQ[Repeated,#1],{HoldAllComplete}][StringExpression],System`Private`VerbatimSameQ[Repeated,StringExpression],False},{Function[Null,System`Private`VerbatimSameQ[RepeatedNull,#1],{HoldAllComplete}][StringExpression],System`Private`VerbatimSameQ[RepeatedNull,StringExpression],False},{Function[Null,System`Private`VerbatimSameQ[Repeated,#1],{HoldAllComplete}][StringExpression],System`Private`VerbatimSameQ[Repeated,StringExpression],False},{Function[Null,System`Private`VerbatimSameQ[RepeatedNull,#1],{HoldAllComplete}][StringExpression],System`Private`VerbatimSameQ[RepeatedNull,StringExpression],False},\.~~Whitespace},{StringPattern`Dump`res=\.~~Whitespace,\.~~Whitespace},{StringPattern`Dump`pattvars=DeleteCases[MapIndexed[{#1,#2[[1]]}&,StringPattern`Dump`vars],{Null,_}];StringPattern`Dump`varsonly=First/@StringPattern`Dump`pattvars;StringPattern`Dump`conditions=Function[StringPattern`Dump`cond,{StringPattern`Dump`cond[[1]],If[!ListQ[StringPattern`Dump`cond[[2]]],StringPattern`Dump`cond[[2]],(Position[StringPattern`Dump`pattvars,#1][[1,1]]&)/@StringPattern`Dump`cond[[2]]]}]/@StringPattern`Dump`conditions;StringPattern`Dump`res=StringPattern`Dump`res//. StringPattern`Dump`rules;If[StringQ[StringPattern`Dump`res],StringPattern`Dump`res=(?ms)<>StringPattern`Dump`res,With[{StringPattern`Dump`corepatt$=If[0>0&&Length[.~~Whitespace]>=3,Take[.~~Whitespace,{2,-2}],.~~Whitespace]/. StringPattern`Dump`ruleHoldPattern},StringPattern`Dump`new=First[Select[StringExpression@@Join[Cases[{StringPattern`Dump`corepatt$},StringExpression[___],\[Infinity]],{StringPattern`Dump`corepatt$}],!StringQ[(StringPattern`Dump`vars={};StringPattern`Dump`capgroups={};StringExpression[#1]/. StringPattern`Dump`expandDatePattern/. StringPattern`Dump`rule0/. StringPattern`Dump`rule1/. StringPattern`Dump`rule1b/. StringPattern`Dump`rule2/. If[0>0,StringPattern`Dump`rule2b,{}]/. StringPattern`Dump`rule3)//. StringPattern`Dump`rules]&,1]];Message[StringExpression::invld,StringPattern`Dump`new,StringPattern`Dump`corepatt$];Throw[$Failed];]];{StringPattern`Dump`res,StringPattern`Dump`pattvars,StringPattern`Dump`conditions,StringPattern`Dump`heldrhs},{{{{StringPattern`Dump`vars,{}},MapIndexed[{#1,#2[[1]]}&,{}],{}},DeleteCases[{},{Null,_}],{}},StringPattern`Dump`pattvars={},{}},{{{StringPattern`Dump`pattvars,{}},First/@{},{}},StringPattern`Dump`varsonly={},{}},{{{StringPattern`Dump`conditions,{}},Function[StringPattern`Dump`cond,{StringPattern`Dump`cond[[1]],If[!ListQ[StringPattern`Dump`cond[[2]]],StringPattern`Dump`cond[[2]],(Position[StringPattern`Dump`pattvars,#1][[1,1]]&)/@StringPattern`Dump`cond[[2]]]}]/@{},{}},StringPattern`Dump`conditions={},{}},{{{StringPattern`Dump`res,\.~~Whitespace},{StringPattern`Dump`rules,{StringExpression[StringPattern`Dump`s___]:>(StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules),HoldPattern[PatternSequence][StringPattern`Dump`s___]:>(StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules),StringPattern`Dump`CallOut[StringPattern`Dump`n_,StringPattern`Dump`s_]:>(StringPattern`Dump`SP[StringPattern`Dump`s,(?C<>ToString[StringPattern`Dump`n]<>)]//. StringPattern`Dump`rules),HoldPattern[ShortestMatch][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=?},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[LongestMatch][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Shortest][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=?},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Longest][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Verbatim][StringPattern`Dump`s___]:>StringPattern`Dump`SP[StringPattern`Dump`s],StringPattern`Dump`SP[StringPattern`Dump`s___String]:>StringJoin[StringPattern`Dump`s],HoldPattern[Except][StringPattern`Dump`CharacterGroup[StringPattern`Dump`s___]]:>[^<>StringJoin[{StringPattern`Dump`s}/. Join[StringPattern`Dump`SingleCharInGroupRules,StringPattern`Dump`$RegExpSpecialCharactersInGroup]]<>],StringPattern`Dump`CharacterGroup[StringPattern`Dump`s___]:>[<>StringJoin[{StringPattern`Dump`s}/. Join[StringPattern`Dump`SingleCharInGroupRules,StringPattern`Dump`$RegExpSpecialCharactersInGroup]]<>],WordBoundary->\b,HoldPattern[Except][WordBoundary]->\B,DigitCharacter->\d,HoldPattern[Except][DigitCharacter]->\D,LetterCharacter->[[:alpha:]],HoldPattern[Except][LetterCharacter]->[^[:alpha:]],WordCharacter->[[:alnum:]],HoldPattern[Except][WordCharacter]->[^[:alnum:]],HexadecimalCharacter->[[:xdigit:]],HoldPattern[Except][HexadecimalCharacter]->[^[:xdigit:]],WhitespaceCharacter->\s,HoldPattern[Except][WhitespaceCharacter]->\S,Whitespace:>\s+<>StringPattern`Dump`$Quantifier,NumberString->(?:(?:\+|-)?(?:\d+(?:\.\d*)?|\.\d+)),StartOfLine->^,HoldPattern[Except][StartOfLine]->(?!^),EndOfLine->$,HoldPattern[Except][EndOfLine]->(?!$),StartOfString->\A,HoldPattern[Except][StartOfString]->(?!\A),EndOfString->\z,HoldPattern[Except][EndOfString]->(?!\z),HoldPattern[Except][StringPattern`Dump`s_,StringPattern`Dump`t_]:>With[{StringPattern`Dump`tmp=Except[StringPattern`Dump`s]//. StringPattern`Dump`rules},If[StringQ[StringPattern`Dump`tmp],StringPattern`Dump`SP[(?=<>StringPattern`Dump`tmp<>),StringPattern`Dump`t],$Failed]],HoldPattern[Except][StringPattern`Dump`s___]:>If[Length[{StringPattern`Dump`s}]==1&&StringQ[StringPattern`Dump`s]&&StringLength[StringPattern`Dump`s]==1,[^<>(StringPattern`Dump`s/. StringPattern`Dump`$RegExpSpecialCharactersInGroup)<>],$Failed],StringPattern`Dump`RE[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s],(StringPattern`Dump`UnnamedCapGr|StringPattern`Dump`CapGr)[StringPattern`Dump`n_,StringPattern`Dump`s_String]:>(<>StringPattern`Dump`s<>),StringPattern`Dump`NCGDelayed[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s],StringPattern`Dump`BackRef[StringPattern`Dump`n_]:>StringPattern`Dump`NCG[\<>ToString[StringPattern`Dump`n]],HoldPattern[Alternatives][]:>\b\B,HoldPattern[Alternatives][StringPattern`Dump`x:(_String..)]:>If[MemberQ[{StringPattern`Dump`x},],With[{StringPattern`Dump`tmp=DeleteCases[{StringPattern`Dump`x},]},If[Length[StringPattern`Dump`tmp]==1,StringPattern`Dump`QuestionMark[StringPattern`Dump`tmp[[1]]],If[Length[StringPattern`Dump`tmp]==0,,StringPattern`Dump`QuestionMark[Alternatives@@StringPattern`Dump`tmp]]]],StringPattern`Dump`NCG[StringTake[StringJoin[(#1<>|&)/@{StringPattern`Dump`x}],{1,-2}]]],StringPattern`Dump`RepeatedObject[StringPattern`Dump`s_String,StringPattern`Dump`u_]:>StringPattern`Dump`NCG[StringPattern`Dump`s]<>If[ListQ[StringPattern`Dump`u],{<>ToString[StringPattern`Dump`u[[1]]]<>If[StringPattern`Dump`u[[2]]===StringPattern`Dump`u[[1]],,,<>If[StringPattern`Dump`u[[2]]===\[Infinity],,ToString[StringPattern`Dump`u[[2]]]]]<>},If[StringPattern`Dump`u===0,*,+]]<>StringPattern`Dump`$Quantifier,HoldPattern[Blank][]:>.,HoldPattern[BlankSequence][]:>.+<>StringPattern`Dump`$Quantifier,HoldPattern[BlankNullSequence][]:>.*<>StringPattern`Dump`$Quantifier,HoldPattern[HoldPattern][StringPattern`Dump`s_String]:>StringPattern`Dump`s,StringPattern`Dump`QuestionMark[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s]<>?<>StringPattern`Dump`$Quantifier}},\.~~Whitespace//. {StringExpression[StringPattern`Dump`s___]:>(StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules),HoldPattern[PatternSequence][StringPattern`Dump`s___]:>(StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules),StringPattern`Dump`CallOut[StringPattern`Dump`n_,StringPattern`Dump`s_]:>(StringPattern`Dump`SP[StringPattern`Dump`s,(?C<>ToString[StringPattern`Dump`n]<>)]//. StringPattern`Dump`rules),HoldPattern[ShortestMatch][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=?},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[LongestMatch][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Shortest][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=?},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Longest][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Verbatim][StringPattern`Dump`s___]:>StringPattern`Dump`SP[StringPattern`Dump`s],StringPattern`Dump`SP[StringPattern`Dump`s___String]:>StringJoin[StringPattern`Dump`s],HoldPattern[Except][StringPattern`Dump`CharacterGroup[StringPattern`Dump`s___]]:>[^<>StringJoin[{StringPattern`Dump`s}/. Join[StringPattern`Dump`SingleCharInGroupRules,StringPattern`Dump`$RegExpSpecialCharactersInGroup]]<>],StringPattern`Dump`CharacterGroup[StringPattern`Dump`s___]:>[<>StringJoin[{StringPattern`Dump`s}/. Join[StringPattern`Dump`SingleCharInGroupRules,StringPattern`Dump`$RegExpSpecialCharactersInGroup]]<>],WordBoundary->\b,HoldPattern[Except][WordBoundary]->\B,DigitCharacter->\d,HoldPattern[Except][DigitCharacter]->\D,LetterCharacter->[[:alpha:]],HoldPattern[Except][LetterCharacter]->[^[:alpha:]],WordCharacter->[[:alnum:]],HoldPattern[Except][WordCharacter]->[^[:alnum:]],HexadecimalCharacter->[[:xdigit:]],HoldPattern[Except][HexadecimalCharacter]->[^[:xdigit:]],WhitespaceCharacter->\s,HoldPattern[Except][WhitespaceCharacter]->\S,Whitespace:>\s+<>StringPattern`Dump`$Quantifier,NumberString->(?:(?:\+|-)?(?:\d+(?:\.\d*)?|\.\d+)),StartOfLine->^,HoldPattern[Except][StartOfLine]->(?!^),EndOfLine->$,HoldPattern[Except][EndOfLine]->(?!$),StartOfString->\A,HoldPattern[Except][StartOfString]->(?!\A),EndOfString->\z,HoldPattern[Except][EndOfString]->(?!\z),HoldPattern[Except][StringPattern`Dump`s_,StringPattern`Dump`t_]:>With[{StringPattern`Dump`tmp=Except[StringPattern`Dump`s]//. StringPattern`Dump`rules},If[StringQ[StringPattern`Dump`tmp],StringPattern`Dump`SP[(?=<>StringPattern`Dump`tmp<>),StringPattern`Dump`t],$Failed]],HoldPattern[Except][StringPattern`Dump`s___]:>If[Length[{StringPattern`Dump`s}]==1&&StringQ[StringPattern`Dump`s]&&StringLength[StringPattern`Dump`s]==1,[^<>(StringPattern`Dump`s/. StringPattern`Dump`$RegExpSpecialCharactersInGroup)<>],$Failed],StringPattern`Dump`RE[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s],(StringPattern`Dump`UnnamedCapGr|StringPattern`Dump`CapGr)[StringPattern`Dump`n_,StringPattern`Dump`s_String]:>(<>StringPattern`Dump`s<>),StringPattern`Dump`NCGDelayed[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s],StringPattern`Dump`BackRef[StringPattern`Dump`n_]:>StringPattern`Dump`NCG[\<>ToString[StringPattern`Dump`n]],HoldPattern[Alternatives][]:>\b\B,HoldPattern[Alternatives][StringPattern`Dump`x:(_String..)]:>If[MemberQ[{StringPattern`Dump`x},],With[{StringPattern`Dump`tmp=DeleteCases[{StringPattern`Dump`x},]},If[Length[StringPattern`Dump`tmp]==1,StringPattern`Dump`QuestionMark[StringPattern`Dump`tmp[[1]]],If[Length[StringPattern`Dump`tmp]==0,,StringPattern`Dump`QuestionMark[Alternatives@@StringPattern`Dump`tmp]]]],StringPattern`Dump`NCG[StringTake[StringJoin[(#1<>|&)/@{StringPattern`Dump`x}],{1,-2}]]],StringPattern`Dump`RepeatedObject[StringPattern`Dump`s_String,StringPattern`Dump`u_]:>StringPattern`Dump`NCG[StringPattern`Dump`s]<>If[ListQ[StringPattern`Dump`u],{<>ToString[StringPattern`Dump`u[[1]]]<>If[StringPattern`Dump`u[[2]]===StringPattern`Dump`u[[1]],,,<>If[StringPattern`Dump`u[[2]]===\[Infinity],,ToString[StringPattern`Dump`u[[2]]]]]<>},If[StringPattern`Dump`u===0,*,+]]<>StringPattern`Dump`$Quantifier,HoldPattern[Blank][]:>.,HoldPattern[BlankSequence][]:>.+<>StringPattern`Dump`$Quantifier,HoldPattern[BlankNullSequence][]:>.*<>StringPattern`Dump`$Quantifier,HoldPattern[HoldPattern][StringPattern`Dump`s_String]:>StringPattern`Dump`s,StringPattern`Dump`QuestionMark[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s]<>?<>StringPattern`Dump`$Quantifier},{{StringPattern`Dump`rules,{StringExpression[StringPattern`Dump`s___]:>(StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules),HoldPattern[PatternSequence][StringPattern`Dump`s___]:>(StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules),StringPattern`Dump`CallOut[StringPattern`Dump`n_,StringPattern`Dump`s_]:>(StringPattern`Dump`SP[StringPattern`Dump`s,(?C<>ToString[StringPattern`Dump`n]<>)]//. StringPattern`Dump`rules),HoldPattern[ShortestMatch][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=?},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[LongestMatch][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Shortest][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=?},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Longest][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Verbatim][StringPattern`Dump`s___]:>StringPattern`Dump`SP[StringPattern`Dump`s],StringPattern`Dump`SP[StringPattern`Dump`s___String]:>StringJoin[StringPattern`Dump`s],HoldPattern[Except][StringPattern`Dump`CharacterGroup[StringPattern`Dump`s___]]:>[^<>StringJoin[{StringPattern`Dump`s}/. Join[StringPattern`Dump`SingleCharInGroupRules,StringPattern`Dump`$RegExpSpecialCharactersInGroup]]<>],StringPattern`Dump`CharacterGroup[StringPattern`Dump`s___]:>[<>StringJoin[{StringPattern`Dump`s}/. Join[StringPattern`Dump`SingleCharInGroupRules,StringPattern`Dump`$RegExpSpecialCharactersInGroup]]<>],WordBoundary->\b,HoldPattern[Except][WordBoundary]->\B,DigitCharacter->\d,HoldPattern[Except][DigitCharacter]->\D,LetterCharacter->[[:alpha:]],HoldPattern[Except][LetterCharacter]->[^[:alpha:]],WordCharacter->[[:alnum:]],HoldPattern[Except][WordCharacter]->[^[:alnum:]],HexadecimalCharacter->[[:xdigit:]],HoldPattern[Except][HexadecimalCharacter]->[^[:xdigit:]],WhitespaceCharacter->\s,HoldPattern[Except][WhitespaceCharacter]->\S,Whitespace:>\s+<>StringPattern`Dump`$Quantifier,NumberString->(?:(?:\+|-)?(?:\d+(?:\.\d*)?|\.\d+)),StartOfLine->^,HoldPattern[Except][StartOfLine]->(?!^),EndOfLine->$,HoldPattern[Except][EndOfLine]->(?!$),StartOfString->\A,HoldPattern[Except][StartOfString]->(?!\A),EndOfString->\z,HoldPattern[Except][EndOfString]->(?!\z),HoldPattern[Except][StringPattern`Dump`s_,StringPattern`Dump`t_]:>With[{StringPattern`Dump`tmp=Except[StringPattern`Dump`s]//. StringPattern`Dump`rules},If[StringQ[StringPattern`Dump`tmp],StringPattern`Dump`SP[(?=<>StringPattern`Dump`tmp<>),StringPattern`Dump`t],$Failed]],HoldPattern[Except][StringPattern`Dump`s___]:>If[Length[{StringPattern`Dump`s}]==1&&StringQ[StringPattern`Dump`s]&&StringLength[StringPattern`Dump`s]==1,[^<>(StringPattern`Dump`s/. StringPattern`Dump`$RegExpSpecialCharactersInGroup)<>],$Failed],StringPattern`Dump`RE[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s],(StringPattern`Dump`UnnamedCapGr|StringPattern`Dump`CapGr)[StringPattern`Dump`n_,StringPattern`Dump`s_String]:>(<>StringPattern`Dump`s<>),StringPattern`Dump`NCGDelayed[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s],StringPattern`Dump`BackRef[StringPattern`Dump`n_]:>StringPattern`Dump`NCG[\<>ToString[StringPattern`Dump`n]],HoldPattern[Alternatives][]:>\b\B,HoldPattern[Alternatives][StringPattern`Dump`x:(_String..)]:>If[MemberQ[{StringPattern`Dump`x},],With[{StringPattern`Dump`tmp=DeleteCases[{StringPattern`Dump`x},]},If[Length[StringPattern`Dump`tmp]==1,StringPattern`Dump`QuestionMark[StringPattern`Dump`tmp[[1]]],If[Length[StringPattern`Dump`tmp]==0,,StringPattern`Dump`QuestionMark[Alternatives@@StringPattern`Dump`tmp]]]],StringPattern`Dump`NCG[StringTake[StringJoin[(#1<>|&)/@{StringPattern`Dump`x}],{1,-2}]]],StringPattern`Dump`RepeatedObject[StringPattern`Dump`s_String,StringPattern`Dump`u_]:>StringPattern`Dump`NCG[StringPattern`Dump`s]<>If[ListQ[StringPattern`Dump`u],{<>ToString[StringPattern`Dump`u[[1]]]<>If[StringPattern`Dump`u[[2]]===StringPattern`Dump`u[[1]],,,<>If[StringPattern`Dump`u[[2]]===\[Infinity],,ToString[StringPattern`Dump`u[[2]]]]]<>},If[StringPattern`Dump`u===0,*,+]]<>StringPattern`Dump`$Quantifier,HoldPattern[Blank][]:>.,HoldPattern[BlankSequence][]:>.+<>StringPattern`Dump`$Quantifier,HoldPattern[BlankNullSequence][]:>.*<>StringPattern`Dump`$Quantifier,HoldPattern[HoldPattern][StringPattern`Dump`s_String]:>StringPattern`Dump`s,StringPattern`Dump`QuestionMark[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s]<>?<>StringPattern`Dump`$Quantifier}},StringPattern`Dump`SP[\.,Whitespace]//. {StringExpression[StringPattern`Dump`s___]:>(StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules),HoldPattern[PatternSequence][StringPattern`Dump`s___]:>(StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules),StringPattern`Dump`CallOut[StringPattern`Dump`n_,StringPattern`Dump`s_]:>(StringPattern`Dump`SP[StringPattern`Dump`s,(?C<>ToString[StringPattern`Dump`n]<>)]//. StringPattern`Dump`rules),HoldPattern[ShortestMatch][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=?},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[LongestMatch][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Shortest][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=?},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Longest][StringPattern`Dump`s___]:>Block[{StringPattern`Dump`$Quantifier=},StringPattern`Dump`SP[StringPattern`Dump`s]//. StringPattern`Dump`rules],HoldPattern[Verbatim][StringPattern`Dump`s___]:>StringPattern`Dump`SP[StringPattern`Dump`s],StringPattern`Dump`SP[StringPattern`Dump`s___String]:>StringJoin[StringPattern`Dump`s],HoldPattern[Except][StringPattern`Dump`CharacterGroup[StringPattern`Dump`s___]]:>[^<>StringJoin[{StringPattern`Dump`s}/. Join[StringPattern`Dump`SingleCharInGroupRules,StringPattern`Dump`$RegExpSpecialCharactersInGroup]]<>],StringPattern`Dump`CharacterGroup[StringPattern`Dump`s___]:>[<>StringJoin[{StringPattern`Dump`s}/. Join[StringPattern`Dump`SingleCharInGroupRules,StringPattern`Dump`$RegExpSpecialCharactersInGroup]]<>],WordBoundary->\b,HoldPattern[Except][WordBoundary]->\B,DigitCharacter->\d,HoldPattern[Except][DigitCharacter]->\D,LetterCharacter->[[:alpha:]],HoldPattern[Except][LetterCharacter]->[^[:alpha:]],WordCharacter->[[:alnum:]],HoldPattern[Except][WordCharacter]->[^[:alnum:]],HexadecimalCharacter->[[:xdigit:]],HoldPattern[Except][HexadecimalCharacter]->[^[:xdigit:]],WhitespaceCharacter->\s,HoldPattern[Except][WhitespaceCharacter]->\S,Whitespace:>\s+<>StringPattern`Dump`$Quantifier,NumberString->(?:(?:\+|-)?(?:\d+(?:\.\d*)?|\.\d+)),StartOfLine->^,HoldPattern[Except][StartOfLine]->(?!^),EndOfLine->$,HoldPattern[Except][EndOfLine]->(?!$),StartOfString->\A,HoldPattern[Except][StartOfString]->(?!\A),EndOfString->\z,HoldPattern[Except][EndOfString]->(?!\z),HoldPattern[Except][StringPattern`Dump`s_,StringPattern`Dump`t_]:>With[{StringPattern`Dump`tmp=Except[StringPattern`Dump`s]//. StringPattern`Dump`rules},If[StringQ[StringPattern`Dump`tmp],StringPattern`Dump`SP[(?=<>StringPattern`Dump`tmp<>),StringPattern`Dump`t],$Failed]],HoldPattern[Except][StringPattern`Dump`s___]:>If[Length[{StringPattern`Dump`s}]==1&&StringQ[StringPattern`Dump`s]&&StringLength[StringPattern`Dump`s]==1,[^<>(StringPattern`Dump`s/. StringPattern`Dump`$RegExpSpecialCharactersInGroup)<>],$Failed],StringPattern`Dump`RE[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s],(StringPattern`Dump`UnnamedCapGr|StringPattern`Dump`CapGr)[StringPattern`Dump`n_,StringPattern`Dump`s_String]:>(<>StringPattern`Dump`s<>),StringPattern`Dump`NCGDelayed[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s],StringPattern`Dump`BackRef[StringPattern`Dump`n_]:>StringPattern`Dump`NCG[\<>ToString[StringPattern`Dump`n]],HoldPattern[Alternatives][]:>\b\B,HoldPattern[Alternatives][StringPattern`Dump`x:(_String..)]:>If[MemberQ[{StringPattern`Dump`x},],With[{StringPattern`Dump`tmp=DeleteCases[{StringPattern`Dump`x},]},If[Length[StringPattern`Dump`tmp]==1,StringPattern`Dump`QuestionMark[StringPattern`Dump`tmp[[1]]],If[Length[StringPattern`Dump`tmp]==0,,StringPattern`Dump`QuestionMark[Alternatives@@StringPattern`Dump`tmp]]]],StringPattern`Dump`NCG[StringTake[StringJoin[(#1<>|&)/@{StringPattern`Dump`x}],{1,-2}]]],StringPattern`Dump`RepeatedObject[StringPattern`Dump`s_String,StringPattern`Dump`u_]:>StringPattern`Dump`NCG[StringPattern`Dump`s]<>If[ListQ[StringPattern`Dump`u],{<>ToString[StringPattern`Dump`u[[1]]]<>If[StringPattern`Dump`u[[2]]===StringPattern`Dump`u[[1]],,,<>If[StringPattern`Dump`u[[2]]===\[Infinity],,ToString[StringPattern`Dump`u[[2]]]]]<>},If[StringPattern`Dump`u===0,*,+]]<>StringPattern`Dump`$Quantifier,HoldPattern[Blank][]:>.,HoldPattern[BlankSequence][]:>.+<>StringPattern`Dump`$Quantifier,HoldPattern[BlankNullSequence][]:>.*<>StringPattern`Dump`$Quantifier,HoldPattern[HoldPattern][StringPattern`Dump`s_String]:>StringPattern`Dump`s,StringPattern`Dump`QuestionMark[StringPattern`Dump`s_String]:>StringPattern`Dump`NCG[StringPattern`Dump`s]<>?<>StringPattern`Dump`$Quantifier},{Function[Null,System`Private`VerbatimSameQ[PatternSequence,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[PatternSequence,StringPattern`Dump`SP],False},{Function[Null,System`Private`VerbatimSameQ[Shortest,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[Shortest,StringPattern`Dump`SP],False},{Function[Null,System`Private`VerbatimSameQ[Longest,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[Longest,StringPattern`Dump`SP],False},{Function[Null,System`Private`VerbatimSameQ[Verbatim,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[Verbatim,StringPattern`Dump`SP],False},{Function[Null,System`Private`VerbatimSameQ[Except,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[Except,StringPattern`Dump`SP],False},{Function[Null,System`Private`VerbatimSameQ[Except,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[Except,StringPattern`Dump`SP],False},{Function[Null,System`Private`VerbatimSameQ[Alternatives,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[Alternatives,StringPattern`Dump`SP],False},{{{StringPattern`Dump`$Quantifier,},\s+<>,\s+},StringPattern`Dump`SP[\.,\s+]},{Function[Null,System`Private`VerbatimSameQ[PatternSequence,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[PatternSequence,StringPattern`Dump`SP],False},{Function[Null,System`Private`VerbatimSameQ[Shortest,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[Shortest,StringPattern`Dump`SP],False},{Function[Null,System`Private`VerbatimSameQ[Longest,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[Longest,StringPattern`Dump`SP],False},{Function[Null,System`Private`VerbatimSameQ[Verbatim,#1],{HoldAllComplete}][StringPattern`Dump`SP],System`Private`VerbatimSameQ[Verbatim,StringPattern`Dump`SP],False},{\.<>\s+,\.\s+},\.\s+},\.\s+},StringPattern`Dump`res=\.\s+,\.\s+},{{{StringPattern`Dump`res,\.\s+},StringQ[\.\s+],True},If[True,StringPattern`Dump`res=(?ms)<>StringPattern`Dump`res,With[{StringPattern`Dump`corepatt$=If[0>0&&Length[.~~Whitespace]>=3,Take[.~~Whitespace,{2,-2}],.~~Whitespace]/. StringPattern`Dump`ruleHoldPattern},StringPattern`Dump`new=First[Select[StringExpression@@Join[Cases[{StringPattern`Dump`corepatt$},StringExpression[___],\[Infinity]],{StringPattern`Dump`corepatt$}],!StringQ[(StringPattern`Dump`vars={};StringPattern`Dump`capgroups={};StringExpression[#1]/. StringPattern`Dump`expandDatePattern/. StringPattern`Dump`rule0/. StringPattern`Dump`rule1/. StringPattern`Dump`rule1b/. StringPattern`Dump`rule2/. If[0>0,StringPattern`Dump`rule2b,{}]/. StringPattern`Dump`rule3)//. StringPattern`Dump`rules]&,1]];Message[StringExpression::invld,StringPattern`Dump`new,StringPattern`Dump`corepatt$];Throw[$Failed];]],StringPattern`Dump`res=(?ms)<>StringPattern`Dump`res,{{StringPattern`Dump`res,\.\s+},(?ms)<>\.\s+,(?ms)\.\s+},StringPattern`Dump`res=(?ms)\.\s+,(?ms)\.\s+},{{StringPattern`Dump`res,(?ms)\.\s+},{StringPattern`Dump`pattvars,{}},{StringPattern`Dump`conditions,{}},{StringPattern`Dump`heldrhs,Hold[None]},{(?ms)\.\s+,{},{},Hold[None]}},{(?ms)\.\s+,{},{},Hold[None]}},{(?ms)\.\s+,{},{},Hold[None]}},{(?ms)\.\s+,{},{},Hold[None]}},{(?ms)\.\s+,{},{},Hold[None]}},{a,b,c}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement