Мне нужно найти многострочный шаблон в Python.Поэтому я использую DOTALL из регулярных выражений, но он находит больше, чем мне нужно.
образец файла:
if(condition_1)
{
....
some text
some text
if ((condition_1== condition_2) ||
(condition_3== condition_4) ||
(condition_6== condition_5) ||
(condition_7== condition_8) ) // XYZ_variable
{
...
Мой регулярный выражения Python следует
re.compile(r'(if\s*?\()(.*?)(\/\/\s*?)(XYZ_variable)', re.DOTALL)
этопоиск первого условия if до XYZ_variable, но мне нужно только второе условие if, где присутствует XYZ_variable.
, поэтому я изменил свое регулярное выражение следующим образом, что не работает
re.compile(r'(if\s*?\()([^\{].*?)(\/\/\s*?)(XYZ_variable)', re.DOTALL)
Мой окончательный выводдолжно быть похоже на
if(condition_1)
{
....
some text
some text
if (((condition_1== condition_2) ||
(condition_3== condition_4) ||
(condition_6== condition_5) ||
(condition_7== condition_8) ) || XYZ_variable )
{
...
но мой регулярное выражение делает что-то вроде этого
if ((condition_1)
{
....
some text
some text
if ((condition_1== condition_2) ||
(condition_3== condition_4) ||
(condition_6== condition_5) ||
(condition_7== condition_8) ) || XYZ_variable )
{
...