Boost C++ Libraries: Ticket #6493: Problem in using regex to find nested tags https://svn.boost.org/trac10/ticket/6493 <p> I want to use regex to find all <code>"&lt;NPC&gt;&lt;/NPC&gt;"</code> like tags in a text file, and tags may recursive. So I made an example, using patterns </p> <p> <code>&lt;(?&lt;HtmlTag&gt;NPC)&gt;((?&lt;Nested&gt;&lt;\k&lt;HtmlTag&gt;&gt;)|&lt;/\k&lt;HtmlTag&gt;&gt;(?&lt;-Nested&gt;)|.*?)*&lt;/\k&lt;HtmlTag&gt;&gt;</code> </p> <p> to search string </p> <p> <code>abc&lt;NPC&gt;&lt;NPC&gt;12345&lt;/NPC&gt;1&lt;/NPC&gt;2&lt;NPC&gt;3&lt;/NPC&gt;</code> </p> <p> Well, it works well in Expresso(a cool tool in making and testing regular expressions, can be found at <code>http://www.ultrapico.com/</code>). But by using boost::regex_search, it returns the whole string. It seems that the 3rd <code>"&lt;NPC&gt;"</code> matches <code>".*?"</code> but <code>"&lt;/\k&lt;HtmlTag&gt;&gt;"</code>. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/6493 Trac 1.4.3 little_bird@… Mon, 30 Jan 2012 02:11:42 GMT attachment set https://svn.boost.org/trac10/ticket/6493 https://svn.boost.org/trac10/ticket/6493 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">t.cpp</span> </li> </ul> <p> An example in using regex </p> Ticket John Maddock Sun, 08 Jul 2012 08:25:03 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/6493#comment:1 https://svn.boost.org/trac10/ticket/6493#comment:1 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">invalid</span> </li> </ul> <p> Perl and .Net regular expression are similar but not the same - Perl matches the whole of the input string as well. </p> <p> Suggest you try a recursive expression: <a href="http://www.boost.org/doc/libs/1_50_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html#boost_regex.syntax.perl_syntax.recursive_expressions">http://www.boost.org/doc/libs/1_50_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html#boost_regex.syntax.perl_syntax.recursive_expressions</a> </p> Ticket