Search code examples
regexsimplifysimplification

Is it possible to join these two regex expressions into one?


i have the following two regular expressions (in order btw).

1. ^~/buying/(.*)\?(.*)   => foo= group 1  baa= group 2.
2. ^~/buying/(.*)         => foo= group 1  baa= nothing/empty/null/baibai

What's i'm trying to do is, if the url has a questionmark, then split it into two groups. Otherwise, just throw all the stuff into the first group.

the reason why the order is important for me, is that if i switch them round, the '?' regex will never get fired because the #2 expression (above) will catch all.

So .. can this be re-fixed?

NOTE: I have tried using this website** to help me debug/tweak .. but I can't figure it out.

** I have no affiliation with that site.


Solution

  • try this:

    ^~/buying/([^?]*)\??(.*)
    

    ([^?]*) - Captures the first group, which doesn't contain a question mark.
    \?? - Optional question mark.
    (.*) - Optional second group - can be empty.