[pmwiki-users] Regex help (excluding spaces)

Petko Yotov 5ko at 5ko.fr
Sat Mar 9 15:40:31 CST 2013


Eric Forgeot writes:
>   Markup ('txt2tags_bold', 'directives', '/\*\*(.*?)\*\*/', "'''$1'''");
>
> It works but I get wrong output when having for example **this and **this,  
> because this kind of text is not supposed to be marked as bold.  (**this  
> and** should be bold on the other hand)
>
> So I modified my rule this way, to exclude white spaces before or after:
>
>     Markup ('txt2tags_bold'     , 'directives', '/\*\*[^\s](.*?)[^\s] 
> \*\*/'       , "'''$1'''");
>
> Now it almost works, **this and **this are not catched, but the bold parts  
> are not correct, the first and last letters are striped out, for example  
> **another** would become nothe (in bold). Do you know why, and how to  
> correct this?

You need to place the parentheses around everything that is meant to be  
bold, for example '/\*\*([^\s].*?[^\s])\*\*/' .

However, this will not allow you a single bold character. This one will:

   '/\\*\\*(\\S(.*?\\S)?)\\*\\*/'

This means :
  - starts with a '**'
  - opening the first matched pattern (
  - then a non-whitespace-character \\S, same as [^\\s]
  - opening a second pattern (
    - .* anything, ending with a non-whitespace-character \\S
    - closing the second pattern )
    - the ? after the ) means the pattern is optional
  - closing the first matching pattern )
  - once again '**'.

This is fun :-)

Petko




More information about the pmwiki-users mailing list