Я пытаюсь захватить необязательную группу внутри необходимой группы. Это мое регулярное выражение:
BEGIN
(?<body>
(?<A>.*?) # in my regex just .*?
(?<B>START.*?STOP)?
(?<C>.*?) # in my regex just .*?
)
END
и для ввода:
junk1 BEGIN junk2 START content STOP junk3 END junk4
Я получаю это:
match: 'BEGIN junk2 START content STOP junk3 END' # ok
group 'body': ' junk2 START content STOP junk3 ' # ok
group 'A': '' # expected: ' junk2 '
group 'B': not found # expected: 'START content STOP'
group 'C': ' junk2 START content STOP junk3 ' # expected: ' junk3 '
группы A и C указаны только для справки
Почему группа B не соответствует, даже если есть правильные данные, и я получаю ожидаемый результат, если группа B не является обязательной?
STOP
вместоEND
в(?<B>START.*?END)?
, верно? - person Qtax   schedule 19.11.2013