Regex with optional part doesn't create backreference
Posted
by padraigf
on Stack Overflow
See other posts from Stack Overflow
or by padraigf
Published on 2010-06-09T18:44:31Z
Indexed on
2010/06/09
18:52 UTC
Read the original article
Hit count: 435
regex
I want to match an optional tag at the end of a line of text.
Example input text:
The quick brown fox jumps over the lazy dog {tag}
I want to match the part in curly-braces and create a back-reference to it.
My regex looks like this:
^.*(\{\w+\})?
(somewhat simplified, I'm also matching parts before the tag):
It matches the lines ok (with and without the tag) but doesn't create a back-reference to the tag.
If I remove the '?' character, so regex is:
^.*(\{\w+\})
It creates a back-reference to the tag but then doesn't match lines without the tag.
I understood from http://www.regular-expressions.info/refadv.html that the optional operator wouldn't affect the backreference:
Round brackets group the regex between them. They capture the text matched by the regex inside them that can be reused in a backreference, and they allow you to apply regex operators to the entire grouped regex.
but must've misunderstood something.
How do I make the tag part optional and create a back-reference when it exists?
© Stack Overflow or respective owner