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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access