Ниже приведен пример некоторых данных, которые я использую. Я читал несколько сообщений, посвященных этой теме, а также некоторое время пробовал regex101.Регулярное выражение для извлечения. Позитивные взгляды
BotInfo[-]: Source IP:[10.1.1.100] Target Host:[CentOS70-1] Target OS:[CentOS
7.0] Description:[HTTP Connection Request] Details:[10.1.1.101 - - [28/May
/2013:12:24:08 +0000] "GET /math/html.mli HTTP/1.0" 404 3567 "-" "-" ] Phase:
[Access] Service:[WEB]
Цель состоит в том, чтобы иметь две группы захвата. Один для тега (например, исходный IP, целевой хост, описание и т. Д.) И другой для содержимого, содержащегося в крайних квадратных скобках.
Это «внешняя», которая меня достает, потому что содержимое тега Details содержит квадратные скобки.
Вот мой текущий прогресс в этом регулярном выражении. Я использую/г флаг:
\s?([^:]+):\[(.*?(?=\]\s.*?:\[))\]
Это обрабатывает все, кроме кромки корпуса (это сложнее, чем это необходимо, потому что я возился с попыткой получить случай края для работы).
Мой текущий взгляд (\]\s.*?:\[
), на высоком уровне, соответствует левому скобку конца, а затем следующему тегу. Другая проблема заключается в том, что это не удается в последнем матче, потому что не существует следующего тега.
Редактировать: Был запрошен пример успешного вывода. Используя данные, при условии, цель состоит в том, чтобы иметь две группы захвата в результате в этих парах:
MATCH 1
1. `Source IP`
2. `10.1.1.100`
MATCH 2
1. `Target Host`
2. `CentOS70-1`
MATCH 3
1. `Target OS`
2. `CentOS 7.0`
MATCH 4
1. `Description`
2. `HTTP Connection Request`
MATCH 5
1. `Details`
2. `10.1.1.101 - - [28/May/2013:12:24:08 +0000] "GET /math/html.mli HTTP/1.0" 404 3567 "-" "-" `
MATCH 6
1. `Phase`
2. `Access`
MATCH 7
1. `Service`
2. `WEB`
Можете ли вы дать ожидаемый результат для образца части вашей строки?например, для 'Подробности: [10.1.1.101 - - [28/май/2013: 12: 24: 08 +0000]" GET /math/html.mli HTTP/1.0 "404 3567" - "" - "]' – Kasramvd
@ Тенсибай, да, мои извинения, я имею в виду поле Details:. Я отредактирую это. – Joshua