Строка образца 1:
::SCOPE:Confidentiality:SCOPE:Access Control:SCOPE:AuthorizationTECHNICAL IMPACT:Gain Privileges::
Строка образца 2:
::SCOPE:ConfidentialityTECHNICAL IMPACT:Read Data::
Строка образца 3:
::SCOPE:AvailabilityTECHNICAL IMPACT:Unreliable Execution::SCOPE:Confidentiality:SCOPE:Integrity:SCOPE:AvailabilityTECHNICAL IMPACT:Execute Unauthorized Commands:NOTE:Confidentiality Integrity Availability Execute Unauthorized Commands Run Arbitrary Code::SCOPE:ConfidentialityTECHNICAL IMPACT:Read Data::SCOPE:IntegrityTECHNICAL IMPACT:Modify Data::SCOPE:Confidentiality:SCOPE:Access Control:SCOPE:AuthorizationTECHNICAL IMPACT:Gain Privileges::
Для строки образца 1 я хотел бы извлечь -
Confidentiality
Access Control
Authorization
Gain Privileges
Для образца строки 2, я хотел бы извлечь -
Confidentiality
Read Data
Для образца строки 3: я хотел бы извлечь -
1 -
Availability
Unreliable Execution
2- Конфиденциальность Доступность целостности Выполнение неавторизованных команд
3- Конфиденциальность чтения данных
4- Целостность Изменение данных
5- Конфиденциальность Контроль доступа Авторизация Привилегии получения
Я начал писать простой reg exp -
::SCOPE:([\w\s]+)TECHNICAL IMPACT:([\w\s]+)
, который будет извлекать строку 2.
Затем я написал reg exp -
::SCOPE:([\w\s]+):SCOPE:([\w\s]+):SCOPE:([\w\s]+)TECHNICAL IMPACT:([\w\s]+)
, который extract String 3.
Однако эти выражения имеют следующий вид: c.
Общее, что я вижу, - :: SCOPE: [часть 1 для извлечения] TECHNICAL ВОЗДЕЙСТВИЕ: [часть 2 для извлечения] Этот общий шаблон может присутствовать в нескольких частях данной строки, но [часть 1 до e xtract] является переменной с тем, что должно быть извлечено.
Как я могу найти этот общий шаблон в строке столько раз, чем извлечь из каждого с помощью reg exp?