Что нового

[Данные, строки] Помогите с вытягиванием названий архива из строки

Rjevsky

Новичок
Сообщения
102
Репутация
4
Помогите вытянуть названия архивов со строк следующего типа:
American_Pie.part1.rar_100_d05cb72afb_84.22.95.94_84.22.80.241_0279_iIPxUDP:rofl:SLxHTTP.n.part.rar
American_Pie.part2.rar_100_d05fg72afb_84.22.99.94_84.22.80.241_0291_iIPxUDP:rofl:SLxHTTP.n.part.rar
American_Pie.part3.rar_100_d05hg78hjy_84.22.97.94_84.22.80.241_0308_iIPxUDP:rofl:SLxHTTP.n.part.rar
American Pie.part4.rar_100_d08cb72afb_84.22.96.97_84.262.80.281_0315_iIPxUDP:rofl:SLxHTTP.n.part.rar
American Pie.part5.rar_100_d09cb72afm_84.22.90.94_84.22.807.241_0344_iIPxUDP:rofl:SLxHTTP.n.part.rar
SturzderTitanen.DieJahrhundertsagaPart1_ep9_ammazoone.aax_100_e0f512194e_84.22.94.252_84.22.80.241_0318_iIPxUDP:rofl:SLxHTTP.n.part.rar
То есть из приведённого выше текста нужно получить:
American_Pie.part1.rar
American_Pie.part2.rar
American_Pie.part3.rar
American Pie.part4.rar
American Pie.part5.rar
SturzderTitanen.DieJahrhundertsagaPart1_ep9_ammazoone.aax
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,665
Репутация
2,463
Код:
$vTest = ClipGet()

$sRet = StringRegExpReplace($vTest, '(?i)(.*?\.(?:rar|aax)).*', '\1')
ConsoleWrite($sRet & @LF)
 
Автор
R

Rjevsky

Новичок
Сообщения
102
Репутация
4
Отлично, а как ещё вытянуть номер part и название архива до .part?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,665
Репутация
2,463
Rjevsky [?]
как ещё вытянуть номер part и название архива до .part?
Код:
$vTest = ClipGet()

$sRet = StringRegExpReplace($vTest, '(?i)(.*?)\.?part(\d+).*', 'Name: \1 (Part: \2)')
ConsoleWrite($sRet & @LF)
 

e-Mike

Новичок
Сообщения
15
Репутация
1
Предложу еще один вариант, поскольку регэкспы не всем по зубам, мне например проще обойтись без них :whistle:

Код:
$a="American Pie.part5.rar_100_d09cb72afm_84.22.90.94_84.22.807.241_0344_iIPxUDPxDSLxHTTP.n.part.rar"
$b=StringSplit($a, "_100_", 1)
$c=StringSplit($b[1], ".", 1)

MsgBox(0, "Имя архива полностью", $b[1], 3)
MsgBox(0, "Имя архива и часть", $c[1] & " часть " & StringTrimLeft($c[$c[0]-1], 4), 3)


Для варианта с файлом aax номер части не будет выделен, поскольку это не архив.
 
Верх