Posted to tcl by doctaxon at Fri Feb 05 15:20:19 GMT 2016view pretty

set contents {

{{QS-Medizin|1=Jetzt anders herum [[Benutzer:Partynia|Partynia]] <sup>[[Benutzer Diskussion:Partynia|∞]] [[WP:RM|RM]]</sup> 07:40, 5. Feb. 2016 (CET)}}

Test nach [[Wikipedia:Redaktion Medizin#Vorlage QS-Medizin]]

Diese {{Vorlage|Vorlage}} ist eine Vorlage zum Test.}

#----

regexp -nocase -- {\{\{QS-Medizin\|(?:1=|2=)??(.*?)\}\}} $contents -- reason


%puts $reason
1=Jetzt anders herum [[Benutzer:Partynia|Partynia]] <sup>[[Benutzer Diskussion:Partynia|∞]] [[WP:RM|RM]]</sup> 07:40, 5. Feb. 2016 (CET)

----
But I added into the regex this: (?:1=|2=)??
So I guess, that 1= and 2= are not matched in $reason. But the match begins with 1=


The needed match is (without leading 1=):

%puts $reason
Jetzt anders herum [[Benutzer:Partynia|Partynia]] <sup>[[Benutzer Diskussion:Partynia|∞]] [[WP:RM|RM]]</sup> 07:40, 5. Feb. 2016 (CET)



What is wrong?



Comments

Posted by apn at Fri Feb 05 16:07:47 GMT 2016 [text] [code]

But my point was that (?:1=|2=)? immediately makes the 1= optional and it falls into the (.*) part which is why you see it in reason

Posted by apn at Fri Feb 05 16:10:18 GMT 2016 [text] [code]

% regexp -nocase -- {\{\{QS-Medizin\|(1=|2=){1,1}?(.*)\}\}} $contents x x reason ; set reason Jetzt anders herum [[Benutzer:Partynia|Partynia]] <sup>[[Benutzer Diskussion:Partynia|∞]] [[WP:RM|RM]]</sup> 07:40, 5. Feb. 2016 (CET)

Posted by apn at Fri Feb 05 16:12:23 GMT 2016 [text] [code]

Or this % regexp -nocase -- {\{\{QS-Medizin\|(?:1=|2=){1,1}?(.*)\}\}} $contents x reason ; set reason Jetzt anders herum [[Benutzer:Partynia|Partynia]] <sup>[[Benutzer Diskussion:Partynia|∞]] [[WP:RM|RM]]</sup> 07:40, 5. Feb. 2016 (CET)

Posted by apn at Fri Feb 05 16:17:57 GMT 2016 [text] [code]

Sorry, my attempts are incorrect

Posted by doctaxon at Fri Feb 05 17:51:56 GMT 2016 [text] [code]

Here the solution with thanks to gifti: regexp -nocase -- {(?:\{\{QS-Medizin\|(?:1=|2=)?(.*?)\}\}){1,1}?} $contents -- reason