[pmwiki-users] ROSPatterns/regex question

Peter Kay pkay42 at gmail.com
Tue Sep 26 13:20:07 CDT 2017


As a bit of defensive programming...

This
$ROSPatterns[".*"] = "MyRecipeROS"; // process the entire file before saving.
works fine, but will step on anyone else who is using ROSPatterns for
the whole file.

Perhaps this might be better:
$ROSPatterns[".*(MyRecipe)?"] = "MyRecipeROS"; // process the entire
file before saving.

Hope that helps,

--Peter




On Tue, Sep 26, 2017 at 2:15 PM, Peter Kay <pkay42 at gmail.com> wrote:
> ROSPatterns accepts functions - so think "preg_replace_callback()"
> instead of "preg_replace".
>
> So something like this might work:
>
> $ROSPatterns[".*"] = "MyRecipeROS"; // process the entire file before saving.
>
> function MyRecipeROS($data) {
>   $words=split or preg_split on whitespace, maybe even grab the whitespace;
>   $out="";
>   for ($i = 0; $i<count($words); $i++) { # might need a different
> count if you grabbed the whitespace
>     $out.= "(:word_$i $word[$i]:)";//etc etc
>   }
>   return $out;
> }
>
> On Tue, Sep 26, 2017 at 12:44 PM, James DeVain <jamesdevain at mail.com> wrote:
>> Hello,
>>
>> I've been trying to use $ROSPatterns to change something like this:
>>
>> " mary had a little lamb"
>>
>> into this:
>>
>> "(:word_1:mary:)(:word_2:had:)(:word_3:a:)(:word_4:little:)(:word_5:lamb:)"
>>
>> I don't have much experience with regex, but what I have so far is:
>>
>> $ROSPatterns ["/^\\s/"]    = "(:w1:";
>>
>> which places the first "(:word_1:" in front of "mary". Now I need to find the second empty
>> space and change it to ":)(:word_2:". I figured I could just write a different ROSPattern
>> for each empty space, like:
>>
>> $ROSPatterns ["/^\\s/"]    = "(:w1:";
>> $ROSPatterns ["...find second empty space..."]    = ":)(:w2:";
>> $ROSPatterns ["...find third empty space..."]    = ":)(:w3:";
>> ... etc.
>>
>> Everything I've tried either erases everything after the second space, replaces EVERYTHING
>> with ":)(:word_2:", has no effect at all, or some other unexpected result.
>>
>> I realize that this is more of a regex question than a PmWiki question, but if anybody could
>> help me with this I would be very grateful.
>>
>> Thanks!
>>
>> _______________________________________________
>> pmwiki-users mailing list
>> pmwiki-users at pmichaud.com
>> http://www.pmichaud.com/mailman/listinfo/pmwiki-users



More information about the pmwiki-users mailing list