extract c/cpp include file with regular expression

tiefeng wu icebergwtf at gmail.com
Thu Jul 23 11:46:04 EDT 2009


Hi all!
I need to parse c/cpp source files, one requirement is to extract
included header file name.
here is my solution:
>>> p = re.compile(r'#\s*include\s+(?:(<)|("))(.*)(?(1)>)(?(2)")')
>>> m = re.search(p, '#include <header.h>')
>>> m.group(3)
'header.h'
>>> m = re.search(p, '#include "header.h"')
>>> m.group(3)
'header.h'
>>> m = re.search(p, '#include <header.h"')
>>> print(m)
None
>>> m = re.search(p, '#include "header.h>')
>>> print(m)
None

Pretty ugly! And I know for a valid c/cpp source file, it will be not
necessary to check and match '<' with '>' and " with ",
but I'm wondering to see more elegant way to do such thing.

tiefeng wu
2009-07-23



More information about the Python-list mailing list