O'Reilly logo

Regular Expressions Cookbook by Steven Levithan, Jan Goyvaerts

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

8.12. Match INI Section Headers

Problem

You want to match all section headers in an INI file.

Solution

This one is easy. INI section headers appear at the beginning of a line, and are designated by placing a name within square brackets (e.g., [Section1]). Those rules are simple to translate into a regex:

^\[[^\]\r\n]+]
Regex options: ^ and $ match at line breaks
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby

Discussion

There aren’t many parts to this regex, so it’s easy to break down:

  • The leading ^ matches the position at the beginning of a line, since the “^ and $ match at line breaks” option is enabled.

  • \[ matches a literal [ character. It’s escaped with a backslash to prevent [ from starting a character class.

  • [^\]\r\n] is a negated character class that matches any character except ], a carriage return (\r), or a line feed (\n). The immediately following + quantifier lets the class match one or more characters, which brings us to....

  • The trailing ] matches a literal ] character to end the section header. There’s no need to escape this character with a backslash because it does not occur within a character class.

If you only want to find a specific section header, that’s even easier. The following regex matches the header for a section called Section1:

^\[Section1]
Regex options: ^ and $ match at line breaks
Regex flavors: .NET, Java, JavaScript, PCRE, Perl, Python, Ruby

In this case, the only difference from a plain-text search for “[Section1]” is that the match must ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required