Показать сообщение отдельно

  #2  
Старый 10.07.2016, 22:47
QGate
Познающий
Регистрация: 27.03.2016
Сообщений: 78
С нами: 5331145

Репутация: 0
По умолчанию

Никак не получается составить регулярное выражение. Есть строчка либо формата "ip1 ip2", либо просто "ip1". Нужно регулярками понять сколько введено адресов и записать каждое в переменную. Поможете? Вот есть небольшая наработка.

C++:





Код:
std
::
regex
rgx
(
"([:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3}) ([:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3})"
)
;
std
::
smatch match
;
if
(
std
::
regex_search
(
playerid
,
match
,
rgx
)
)
{
if
(
match
[
2
]
.
matched
)
{
SF
->
LogFile
(
"[EM]: Найдено 2 ip адреса"
,
m
)
;
findedip
=
match
[
1
]
;
sprintf
(
sInfo
.
ip1
,
"%s"
,
findedip
.
c_str
(
)
)
;
findedip
=
match
[
2
]
;
sprintf
(
sInfo
.
ip2
,
"%s"
,
findedip
.
c_str
(
)
)
;
SF
->
LogFile
(
"[EM]: %s %s"
,
sInfo
.
ip1
,
sInfo
.
ip2
)
;
}
else
if
(
match
[
1
]
.
matched
)
{
SF
->
LogFile
(
"[EM]: Найден 1 ip адрес."
)
;
findedip
=
match
[
1
]
;
sprintf
(
sInfo
.
ip1
,
"%s"
,
findedip
.
c_str
(
)
)
;
SF
->
LogFile
(
"[EM]: %s"
,
sInfo
.
ip1
)
;
}
else
{
SF
->
LogFile
(
"[EM]: Ошибка ввода."
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0xFF
,
0
,
0
)
,
"Проверьте правильность ввода!"
)
;
return
;
}
}
 
Ответить с цитированием