Итак, я пытаюсь проанализировать файл с текстом в следующем формате:
outerkey = (innerkey = innervalue)
Это становится более сложным. Это также допустимо в файле:
outerkey = (innerkey = (twodeepkey = twodeepvalue)(twodeepkey2 = twodeepvalue2))
Итак, я хочу в основном захватить только текст внешнего ключа. Я не могу гарантировать, что весь текст будет в одной строке. Возможно, что значение будет в нескольких строках. И в файле более одного элемента.
Итак, вот мое регулярное выражение:
[^\s=]+\s*=\s*(\(\s*.*\s*\))
Цель для меня - просто заменить первую часть [^\s=]+
ключом, по которому я хочу искать, и я получу весь текст внешней скобки.
Вот проблема. Мое регулярное выражение будет не только захватывать текст, который я хочу захватить, но также захватывать текст из следующей группы, поскольку регулярные выражения жадные. Если вы не сделаете его жадным, то это тоже не сработает, так как он перестанет фиксироваться в первой закрывающей скобке.
В конечном итоге, если у меня есть следующая строка
foo =
(
ifoo = ifoov
)
bar =
(
ibar =
(iibar = iibarv)
(iibar2 = iibarv2)
)
Я хочу, чтобы группы совпадали
(
ifoo = ifoov
)
и
(
ibar =
(iibar = iibarv)
(iibar2 = iibarv2)
)
Прямо сейчас это будет соответствовать
(
ifoo = ifoov
)
bar =
(
ibar =
(iibar = iibarv)
(iibar2 = iibarv2)
)
Кстати, я запускаю это в многострочном и однострочном режиме.
Есть идеи? Спасибо!