Regex

Все, что вы хотели знать о программизме, но боялись спросить.
AlexK
Пользователь
Сообщения: 118
Зарегистрирован: 21 окт 2005, 03:16
Откуда: было оттуда, теперь отсюда

Regex

Сообщение AlexK »

Подскажите плиз regex выражение.

Из строки D:\CTS_FAXES\420\Family Maintenance\
Надо вытащить (420) и (Family Maintenance)
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Re: Regex

Сообщение ajkj3em »

regexp match'уют, "вытаскивать" им вообще говоря проблематично
Аватара пользователя
CdR
Графоман
Сообщения: 11245
Зарегистрирован: 11 окт 2004, 19:27
Откуда: Европа, центр, за углом направо.

Re: Regex

Сообщение CdR »

ajkj2em писал(а):regexp match'уют, "вытаскивать" им вообще говоря проблематично
Глубокомысленно...

D:\CTS_FAXES\420\Family Maintenance\

Код: Выделить всё

#!/usr/bin/perl
$_=<>;
/.*\\([^\\]*)\\([^\\]*)\\$/;
print "$1 $2";
Далее могут идти пачки вариаций на тему языков и вводимых строк, о которых в вопросе ни слова.
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Re: Regex

Сообщение ajkj3em »

CdR писал(а):Далее могут идти пачки вариаций на тему языков и вводимых строк, о которых в вопросе ни слова.
о том и речь. regular expression is just that - an expression.
как и чем input токенизируется зависит от тулза или языка.
Аватара пользователя
CdR
Графоман
Сообщения: 11245
Зарегистрирован: 11 окт 2004, 19:27
Откуда: Европа, центр, за углом направо.

Re: Regex

Сообщение CdR »

ajkj2em писал(а):о том и речь. regular expression is just that - an expression.
как и чем input токенизируется зависит от тулза или языка.
Вот только не надо так к словам придираться. Цель и смысл вопроса более менее понятны. А то я тоже начну спрашивать о каких именно regexp речь идет.

PS: ушел пить водку с вареньем. :)
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Re: Regex

Сообщение ajkj3em »

CdR писал(а):Вот только не надо так к словам придираться.
икзактли :)
AlexK
Пользователь
Сообщения: 118
Зарегистрирован: 21 окт 2005, 03:16
Откуда: было оттуда, теперь отсюда

Сообщение AlexK »

логично. подразумевается c# и его regexные классы....

данa строка формата:

string sourcePath = @"D:\CTS_FAXES\420\Family Maintenance\";

надо вытаскивать то что на месте "420" в одну стринг и "Family Maintenance" в другую.

string substring1 = ?
string substring1 = ?

ваш ход маэстры! :D
Аватара пользователя
Picasso
Пользователь
Сообщения: 102
Зарегистрирован: 17 фев 2003, 18:24
Откуда: Due South

Сообщение Picasso »

AlexK писал(а):логично. подразумевается c# и его regexные классы....

данa строка формата:

string sourcePath = @"D:\CTS_FAXES\420\Family Maintenance";

надо вытаскивать то что на месте "420" в одну стринг и "Family Maintenance" в другую.

string substring1 = ?
string substring1 = ?

ваш ход маэстры! :D
"Остап играл в шахматы второй раз в жизни" :)

C# не знаю но нутром чую XPATH там должон быть каким-то боком, хотя бы как часть XSLT.
Юзай функцию tokenize, например что-то типа:

Код: Выделить всё

<xsl:variable name="subs" select="tokenize($sourcePath, '\')"/>
substring1 = <xsl:valule-of select="$subs[3]"/>
substring2 = <xsl:valule-of select="$subs[4]"/>
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 45562
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo

Сообщение Stanislav »

AlexK писал(а):логично. подразумевается c# и его regexные классы....
данa строка формата:
string sourcePath = @"D:\CTS_FAXES\420\Family Maintenance";
надо вытаскивать то что на месте "420" в одну стринг и "Family Maintenance" в другую.
ваш ход маэстры! :D
Ну так бы сразу и сказали! А то слова непонятные пишуть, какие-то закорючки в коде рисують.... :lol: а всего делов то:
string[] str = sourcePath.Split('\\');
string substring1 = str[str.Length-2];
string substring2 = str[str.Length-3];
Аватара пользователя
CdR
Графоман
Сообщения: 11245
Зарегистрирован: 11 окт 2004, 19:27
Откуда: Европа, центр, за углом направо.

Сообщение CdR »

Picasso писал(а):C# не знаю но нутром чую XPATH там должон быть каким-то боком, хотя бы как часть XSLT.
ШО? ОПЯТЬ? :)

Ну так бы сразу и сказали! А то слова непонятные пишуть, какие-то закорючки в коде рисують.... icon_lol.gif а всего делов то:
на самом деле все наверняка в следующей итерации упрется во что-нибудь типа строки "D:\CTS_FAXES\420\Family Maintenance\"
или "D:\CTS_FAXES\<куча всего>\420\\Family Maintenance\<еще много чего>"
IMHO: regexp в таких разборах полетов разумно использовать.

С# сам ни разу не нюхал, но первый же запрос в google подсказал пару примеров, типа такого
Так что сделать по образцу -- никаких проблем.
Ну разве что найти где этот C# водится в живом виде :)
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 45562
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo

Сообщение Stanislav »

CdR писал(а):...на самом деле все наверняка в следующей итерации упрется во что-нибудь типа строки "D:\CTS_FAXES\420\Family Maintenance\"
или "D:\CTS_FAXES\<куча всего>\420\\Family Maintenance\<еще много чего>"
Ну такие строки это вряд ли появятся - они ж не с потолка упали - это имена директорий.
AlexK
Пользователь
Сообщения: 118
Зарегистрирован: 21 окт 2005, 03:16
Откуда: было оттуда, теперь отсюда

Сообщение AlexK »

Не маэстры вы (кроме CDr)! :lol:

Во я как написал

Код: Выделить всё

Match m = Regex.Match(@"D:\CTS_FAXES\420\Family Maintenance\blah.pdf ", ".*\\\\([^\\\\]*)\\\\([^\\\\]*)\\\\[^\\\\]*$", RegexOptions.IgnoreCase);
if (!m.Success)
   throw new Exception("Unable to get office ID and folder name from the file path");

string officeID = m.Groups[1].Value;
string folderName = m.Groups[2].Value;
Ну а если сер'езно - всем спасибо! Форум это сила!
Аватара пользователя
CdR
Графоман
Сообщения: 11245
Зарегистрирован: 11 окт 2004, 19:27
Откуда: Европа, центр, за углом направо.

Сообщение CdR »

Stanislav писал(а):Ну такие строки это вряд ли появятся - они ж не с потолка упали - это имена директорий.
Ну, мало ли в результате чего они получатся могут. Мы то этого знать не можем, только предполагать.
Во я как написал
И шо? заработало? :)
Я точно не маэстр, уж в C# так вообще тока названиё слыхал.


PS: Кстати, мои предположения насчет стоки, таки частично оправдались:

Код: Выделить всё

D:\CTS_FAXES\420\Family Maintenance\blah.pdf
Аватара пользователя
Picasso
Пользователь
Сообщения: 102
Зарегистрирован: 17 фев 2003, 18:24
Откуда: Due South

Сообщение Picasso »

CdR писал(а):
Picasso писал(а):C# не знаю но нутром чую XPATH там должон быть каким-то боком, хотя бы как часть XSLT.
ШО? ОПЯТЬ? :)
А шо, уже было?
Аватара пользователя
Stanislav
Mr. Minority Report
Сообщения: 45562
Зарегистрирован: 19 окт 2005, 16:33
Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo

Сообщение Stanislav »

CdR писал(а):...PS: Кстати, мои предположения насчет стоки, таки частично оправдались:

Код: Выделить всё

D:\CTS_FAXES\420\Family Maintenance\blah.pdf
Ну так, кстати, то что я написал - абсолютно работоспособно для этого случая! Результат будет тот же самый...
Ответить