Я пытаюсь обнаружить все set
из файла CMake с помощью питона регулярных выражений, Ф.О. ниже файла:Python не удается скомпилировать регулярное выражение
# Library to include
set(LIB_TO_INCLUDE
a
b
c)
# comon code (inclusion in source code)
set(SHARED_TO_INCLUDE d e f)
# Library to include
set(THIRD_PARTY g h)
Я хотел бы получить:
LIB_TO_INCLUDE a b c
SHARED_TO_INCLUDE d e f
THIRD_PARTY g h
Я проверил регулярное выражение set\((?s:[^)])*?\)
(получить все, кроме )
предметов, следующих за set(
), используя regex101.com (см. https://regex101.com/r/aB5tX2/1), он, по-видимому, делает то, что я хочу.
Теперь, когда я пытаюсь запустить re.compile(r'set\((?s:[^)])*?\)')
из Python, я получаю ошибку:
File "private\python_scripts\convert.py", line 34, in create_sde_files
pattern = re.compile(r'set\((?s:[^)])*?\)') File "b:\dev\vobs_ext_2015\tools_ext\python\Python34_light\lib\re.py", line 223, in compile
return _compile(pattern, flags) File "b:\dev\vobs_ext_2015\tools_ext\python\Python34_light\lib\re.py", line 294, in _compile
p = sre_compile.compile(pattern, flags) File "b:\dev\vobs_ext_2015\tools_ext\python\Python34_light\lib\sre_compile.py", line 568, in compile
p = sre_parse.parse(p, flags) File "b:\dev\vobs_ext_2015\tools_ext\python\Python34_light\lib\sre_parse.py", line 760, in parse
p = _parse_sub(source, pattern, 0) File "b:\dev\vobs_ext_2015\tools_ext\python\Python34_light\lib\sre_parse.py", line 370, in _parse_sub
itemsappend(_parse(source, state)) File "b:\dev\vobs_ext_2015\tools_ext\python\Python34_light\lib\sre_parse.py", line 721, in _parse
raise error("unknown extension") sre_constants.error: unknown extension
этот вид регулярных выражений не поддерживается Python?
Python не поддерживает '(s:. ', Нет Вы можете использовать' (ы) 'или' re.S' –