Что нового

Первые 3 папки из пути

Rjevsky

Новичок
Сообщения
102
Репутация
4
Из путей типа :
/11111/2 2 2 2/33333/4/5
/AAAA/BBBBB/C C C C/DDD/EEE
нужно получить:
/11111/2 2 2 2/33333
/AAAA/BBBBB/C C C C
 
A

Alofa

Гость
Исходя из названия темы:
Код:
#include <Array.au3>
$sText = 'C:\11111\2 2 2 2\33333\4\5' & @CRLF & _
		'D:\AAAA\BBBBB\C C C C\DDD\EEE'
$asText = StringRegExp($sText, '([C-Z]:\\(?:[^\\]+?\\){3})', 3)
_ArrayDisplay($asText)
 
Автор
R

Rjevsky

Новичок
Сообщения
102
Репутация
4
Спасибо, для моего случая регекс получается такой: (\/(?:[^\/]+?\/){3})
а что делать, если отсутствует слеш на конце пути, который состоит всего из 3 папок (/AAAA/BBBBB/C C C C)?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Rjevsky
Код:
StringRegExp($path, "(/.+?/.+?/.+?)(?:/|$)", 1)
 
A

Alofa

Гость
Код:
#include <Array.au3>
$sText = '/11111/2 2 2 2/33333/4/5' & @CRLF & _
		'/AAAA/BBBBB/C C C C/DDD/EEE' & @CRLF & _
		'/FFF/GGGG/' & @CRLF & _
		'/ZZZZZ/MMMM/RRRR' & @CRLF & _
		'/XXXXX/PPPPPP/55  5/LLLLL/3333/WWWWW/QQQQQ'
$asText = StringRegExp($sText, '((?:/[^\v/]+){3}).*', 3)
_ArrayDisplay($asText)
 
Верх