2013-11-22 5 views
-2

Может кто-нибудь, пожалуйста, помогите мне получить конкретное групповое значение из всех значений группы.Как получить определенную группу в regex

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

Пример Строка:

management:10.103.2.1/52488 (10.105.1.50/52488) to a Identity b:10.105.1.53/443 (10.105.1.53/443) 

Мои Regex:

\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

Применяя этот IP-адрес выбирает все адреса IP-в то время как я хочу, чтобы выбрать конкретный адрес IP-в строке, как (первый ip-адрес в строке или втором ip-адресе в строке и т. д.)

+3

«но это не дает мне конкретного» «Что это дает вам тогда? Покажите, что вы пробовали (** код **) и то, что вы получили. – Holger

+0

@Holger Применяя это регулярное выражение, он выберет все ipadress в строке, не указанной. И я хочу выбрать конкретный IP-адрес. – mahesh

+0

Возможно, вы неправильно применяете регулярное выражение. Мы могли бы помочь, если бы вы показали нам, как вы его применяете. –

ответ

1

Если вы откажетесь использовать простую логику вызова find столько раз, сколько вы хотите в вашем программном обеспечении, Вы можете найти n -м появления рисунка p, но применяя его n раз в шаблоне предварённое неохотно соответствует произвольный текст (?:.*?p){n} где n является искомым Nimber и p шаблон , Таким образом, в вашем случае шаблон:

(?:.*?\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3} 

, чтобы найти третий IP-адрес. Четыре группы, которые вы уже определили, будут содержать четыре десятичных числа последнего совпадения, считанные третьим IP-адресом после успешной операции find. Конечно, если вы хотите полный String по всему адресу, вы можете заключить четыре группы с другой группой. Тогда это будет группа 1.

+0

Ответ, который вы указали, не дает мне ip-адрес, вместо этого он дает мне целую строку, например «управление: 10.103.2.1/52488 (10.105.1.50/52488), к идентификатору b : 10.105.1.53" . Какой из них используется. Я хочу извлечь только IP-адрес. – mahesh

+0

Может быть, вы должны прочитать весь ответ. Я сказал вам, что * группы с 1 по 4 * дадут вам номера IP-адреса. Я также рассказал вам, как получить весь IP-адрес как одну строку, если вы этого хотите. – Holger

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