У меня пример выражение:выражение между фигурной скобкой с внутренним выражением
firstName =:'Mon';lastName =:'Arthur';:or{size >:'20';lastName ^:'H';:and{company |:'lon';:or{company |:'we'}}};lastName =:'aa';:and{length >:'33';:or{color =:'red'};width <:'2'};date <:'2012';:!{source =:'dictionary,locale'}
и регулярное выражение должно соответствовать:
- : или {размер>: '20'; ЬавЬЫате ^: 'Н' ; и {company |: 'lon'; или {company |: 'we'}}}
- : и {длина>: '33';: или {color =: 'red'}; width <: '2'}
- :! {Source =: 'dictionary, locale'}
Так что регулярное выражение должно соответствовать выражению, которое начинается с ':[anycharacters]{
' и заканчивается '}'
, а выражение между этими фигурными скобками также может содержать внутреннее выражение, которое может совпадать.
Я пытаюсь что-то написал: https://regex101.com/r/gM3dR9/13 и возвращение:
- : или {размер>: '20'; LastName ^: 'H';: и {компании |: 'долгота' ;: или {компании |: 'мы'} - OK
- : и {длина>: '33';: или {цвет =: 'красный'} -MISSING
;width <:'2'}
- : {источник =: 'словарь , locale '} -OK
То, что вы пытаетесь сделать, невозможно с регулярным выражением. Какой твой язык? –
@JanDvorak Java –
Возможно, попробуйте ';: (\ S + (?: {. *?} (?= $ |; [^}] *; :))) ' –