2016-02-01 2 views
0

Я ищу для регулярного выражения для отображения только IP-адреса ниже строкрегулярного выражения, чтобы удалить первые и последние символы

LAN_10.100.10.41_fc3/7

мне нужно выход, как показано ниже

10.100 .10.41

заранее спасибо ..

+2

пожалуйста, добавьте информацию о вашем входе (много адресов? Один в каждой строке?), Инструмент или язык, который вы используете, и что вы пробовали или как – sidyll

+0

Start из '_ ([^_] +) _ ' – raina77ow

+0

У меня есть LAN_10.100.10.41_fc3/7 текст в одном слоте, это просто слово, которое вы можете рассмотреть – user3714706

ответ

1

группа захвата будет самым простым, я думаю. Что-то вроде этого:

.+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).+ 

Вышеупомянутое предполагает, что вы используете что-то вроде C++ или C# для разбора и отображения. Таким образом, отображение результата является функцией вашего «языка». Если он зафиксирован в массиве, отобразите его соответствующим образом. Иногда он будет отображаться \1. Вам нужно будет прочитать документы для ответа.

Однако, как Стивен отметил, что если вы используете скрипт для этого и Grep, то что-то подобное должно также хватает:

grep -o "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" - 

Это предположить, Linux и BASH, так что если вы используя Windows, проверьте, что может быть сделано с Powershell. В -o говорится: «напечатайте только соответствующую часть линии» и - - это обозначение BASH для STDIN. Не зная, какие инструменты вы используете для этого, трудно быть более конкретным. Кстати, лучшее тестирование регулярного выражения сайт Я еще не нашел is Regexr.

+0

Он превосходит '255.255.255.255'. –

+0

Нет необходимости в группе захвата. Просто оставьте '. +' Off в начале, а затем группа становится ненужной. –

+0

@StevenDoggart OP не выражал того, что он делал. Поэтому я включил «. +» В начале, чтобы «быть уверенным». Например, с помощью Boost :: Regex, если вы используете (я считаю) семейство функций 'boost :: regex_match()', то регулярное выражение должно * точно соответствовать * строке, тогда как 'boost :: regex_search()' ведет себя больше как то, что используется для того, что «grep» или аналогичные инструменты. Группа захвата указана просто потому, что он сказал, что хочет отображать IP-адрес и не соответствовать ему только. –

0

Чтобы извлечь IP-адрес из строки, подобной этой, используя посмотреть вокруг утверждений, используйте следующее регулярное выражение.

Regex: /(?<=._)[\d.]+(?=_.)/g

Объяснение:

(?<=._) ищет что-нибудь, за которым следует _, который появляется в структуре вашей строки.

(?=_.) ищет что-либо, за которым следует _, который появляется в вашей строке.

[\d.]+ Ищите как можно больше digits и dots, что делает шаблон IP-адреса.

Это соответствует LAN_10.100.10.41_fc3/7 только средняя часть, которая является IP-адрес.

Regex101 Demo

Смежные вопросы