Saturday 4 November 2017

c# - Regex matching into multiple groups per line?

itemprop="text">

I'm trying to come up with a regex to
be able to parse the following type of strings into
groups.




            rel="alternate" type="application/rss+xml" title="[!PageTitle!]"
href="[!SiteRoot!]/feed.xml"
/>


My regular
expression
is:



\[\!(.+)\!\]


The
problem with this expression is that it seems to pull it all into 1
group:




Found 1
match:




  1. "[!PageTitle!]"
    href="[!SiteRoot!]" has 1 group:




    1. "PageTitle!]"
    href="[!SiteRoot"



I
want dont want the regex to continue...am I missing a boundary? Ideally I want it to
find 2 groups,




[!PageTitle!]



and



[!SiteRoot!]



Answer




try:



\[\!(.+?)\!\]



the
+ quantifier is greedy, so will match as far as possible in the
line, capturing the first [ followed by the last ] in the line.
+? is the non-greedy
equivalent.



As an aside, I'm using href="http://www.radsoftware.com.au/regexdesigner/" rel="nofollow noreferrer">Rad
Software Regular Expression Designer. I like it.



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...