phpregexpreg-matchdelimited

Get words delimited by "#$"


How can I match the three words in the following string with a Perl compatible regular expression?

word1#$word2#$word3

I don't know the actual words "word1, word2 and word3" in advance. I only know the separator, which is #$.

And I can't use the word boundary as I have a multibyte encoding. This means for instance that the string can contain non-ASCII characters like umlauts which are not detected by the \w control character.


Solution

  • Try this regular expression:

    /(\w+)#\$(\w+)#\$(\w+)/
    

    Edit   After your provided us with more information (see the comments to this answer):

    /((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)/