Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8998581
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 16, 20262026-06-16T00:03:24+00:00 2026-06-16T00:03:24+00:00

i try to build a small system that catches variables from html template. the

  • 0

i try to build a small system that catches variables from html template.

the variables defined as @XXX@ and may (but not required) to have extra parameters that are sent with colon (:), i.e. @XXX@:j to send the data as json encoded.

what i manage to do is to create a preg_match_all to capture the variables and those extra parameters. so i came up with this preg:

preg_match_all("/(@.*@(?:(j|n|x|z))?)/imU", $string,$this->localVariables,PREG_PATTERN_ORDER);

j|n|x|z are the avialiable extra parameters that are possible.

the string that i send to $string is:
@geterr@ @domain@:j @jhon@:n

the result i get from preg_match_all is:

Array
(
[0] => Array
    (
        [0] => @geterr@
        [1] => @domain@
        [2] => @jhon@
    )

[1] => Array
    (
        [0] => @geterr@
        [1] => @domain@
        [2] => @jhon@
    )

[2] => Array
    (
        [0] => 
        [1] => 
        [2] => 
    )

)

i know (or think i know) that ?: is used for optional sub pattern
the modifires iv’e used are:
i for case insensitive
m for to allow my string to be multiline
U – to be non greedy

i have no other clue what i do wrong.

any help shall be greatly appriciated

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-16T00:03:25+00:00Added an answer on June 16, 2026 at 12:03 am

    There are some issues in your pattern /(@.*@(?:(j|n|x|z))?)/imU

    1. You don’t need a capturing group around the whole pattern.

    2. ?: is creating a non capturing group, it is not limited to optional groups.

    3. The modifier m is called multiline, but this is a bit misleading it affects only the anchors ^ and $ to match also the start and end of a row and not only of the string.

      What you want is the modifier s, the singleline modifier. It treats the whole string as one line, and affects the . to match also newline characters.

    4. The modifier U makes your whole regex ungreedy. This is not what you want, because it affects also your optional group and because it is at the end of the pattern it will never match.

    5. You need to match the : in your string

      So I would remove U and make only the first quantifier ungreedy, by adding a ? after it.

    So I think your regex should be:

    /@(.*?)@(?::(j|n|x|z))?/is
    

    This would put the first part between the @ in the first capturing group and the parameter in the second group.

    See it here on Regexr

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

G'day guys, trying to build a small invoicing system (that can generate PDF's using
I have a small email application that lets a user build a message from
I am currently trying to build a small system that read's in a bunch
I try build wrap panel with vertical buttons. Every button consist from image and
i try to build a app that is in landsscape mode all the time.
Im try to build my plugins that sit in a seperate directory on the
When I try to build a project in Visual Studio 2005 that has a
I have a small project that builds a number of targets from the same
I am working on small scale deployment system for our in-house software that manages
I've already posted this question here , but since it's maybe not that Qt-specific,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.