Извлечь адрес IPv6 из строки

В настоящее время я сформировал KQL, который извлекает адрес ipv4 из строки. аналогично мне нужно было бы извлечь адрес ipv6 из строки

запрос извлечения ipv4:

datatable (ipv4text:string) 
[
'This is a random text that has IP address 128.0.0.20 that has to be extracted'
]
|extend pv4addr = extract("(([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.(([0-9]{1,3})))",1,ipv4text) 

Я пробовал ниже, но не уверен, что он охватывает все крайние случаи.

datatable (ipv6:string) 
[
'IPv6 test 198.192.0.127 2345:5:2CA1:0000:0000:567:5673:256/127 in a random string'
]
|extend Ipv6Address = extract(@"(([0-9a-fA-F]{1,4}\:){7,7}[0-9a-fA-F]{1,4})|([0-9a-fA-F]{1,4}\:){1,7}\:",1,ipv6)

Может ли кто-нибудь из вас предоставить полный KQL (или предложения/подсказки) для извлечения адреса IPV6?

Спасибо.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Шаблоны регулярных выражений можно упростить.

Ниже приведены «счастливые пути». Если он есть, он будет извлечен.
Теоретически вы можете получить ложные срабатывания, хотя с реальными данными это менее вероятно. При необходимости мы можем добавить несколько слоев защиты.

datatable (ipv4text:string) 
[
    'This is a random text that has IP address 128.0.0.20 that has to be extracted'
]
| project pv4addr = extract(@"(\d{1,3}\.){3}\d{1,3}", 0, ipv4text)

pv4addr 128.0.0.20

Скрипка

IPV6 может стать беспорядком (см. https://en.wikipedia.org/wiki/IPv6_address#Representation).
Я бы нашел полное представление IPV6 (8 токенов xdigit, разделенных двоеточием) или любое выражение, построенное из xdigit/colon/period, которое содержит 2 соседних двоеточия.


datatable (ipv6:string) 
[
    'IPv6 test 198.192.0.127 2345:5:2CA1:0000:0000:567:5673:256/127 in a random string'
   ,'IPv6 test 198.192.0.127 2345:5:2CA1::567:5673:256/127 in a random string'
   ,'IPv6 test 198.192.0.127 ::ffff:198.192.0.127 in a random string'
   ,'IPv6 test 198.192.0.127 ::1 in a random string'
   ,'IPv6 test 198.192.0.127 :: in a random string'
]
| project pv6addr = extract(@"([[:xdigit:]]{1,4}:){7}[[:xdigit:]]{1,4}|[[:xdigit:]:.]*::[[:xdigit:]:.]*", 0, ipv6)


pv6addr 2345:5:2CA1:0000:0000:567:5673:256 2345:5:2CA1::567:5673:256 ::ffff:198.192.0.127 ::1 ::

Скрипка

Другие вопросы по теме