Страница 1 из 2
Regex
Добавлено: 13 фев 2006, 17:38
AlexK
Подскажите плиз regex выражение.
Из строки D:\CTS_FAXES\420\Family Maintenance\
Надо вытащить (420) и (Family Maintenance)
Re: Regex
Добавлено: 13 фев 2006, 18:31
ajkj3em
regexp match'уют, "вытаскивать" им вообще говоря проблематично
Re: Regex
Добавлено: 13 фев 2006, 20:11
CdR
ajkj2em писал(а):regexp match'уют, "вытаскивать" им вообще говоря проблематично
Глубокомысленно...
D:\CTS_FAXES\420\Family Maintenance\
Код: Выделить всё
#!/usr/bin/perl
$_=<>;
/.*\\([^\\]*)\\([^\\]*)\\$/;
print "$1 $2";
Далее могут идти пачки вариаций на тему языков и вводимых строк, о которых в вопросе ни слова.
Re: Regex
Добавлено: 13 фев 2006, 20:49
ajkj3em
CdR писал(а):Далее могут идти пачки вариаций на тему языков и вводимых строк, о которых в вопросе ни слова.
о том и речь. regular expression is just that - an expression.
как и чем input токенизируется зависит от тулза или языка.
Re: Regex
Добавлено: 13 фев 2006, 21:29
CdR
ajkj2em писал(а):о том и речь. regular expression is just that - an expression.
как и чем input токенизируется зависит от тулза или языка.
Вот только не надо так к словам придираться. Цель и смысл вопроса более менее понятны. А то я тоже начну спрашивать о каких именно regexp речь идет.
PS: ушел пить водку с вареньем.

Re: Regex
Добавлено: 13 фев 2006, 21:35
ajkj3em
CdR писал(а):Вот только не надо так к словам придираться.
икзактли

Добавлено: 13 фев 2006, 23:05
AlexK
логично. подразумевается c# и его regexные классы....
данa строка формата:
string sourcePath = @"D:\CTS_FAXES\420\Family Maintenance\";
надо вытаскивать то что на месте "420" в одну стринг и "Family Maintenance" в другую.
string substring1 = ?
string substring1 = ?
ваш ход маэстры!

Добавлено: 14 фев 2006, 18:42
Picasso
AlexK писал(а):логично. подразумевается c# и его regexные классы....
данa строка формата:
string sourcePath = @"D:\CTS_FAXES\420\Family Maintenance";
надо вытаскивать то что на месте "420" в одну стринг и "Family Maintenance" в другую.
string substring1 = ?
string substring1 = ?
ваш ход маэстры!

"Остап играл в шахматы второй раз в жизни"
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]"/>
Добавлено: 14 фев 2006, 19:27
Stanislav
AlexK писал(а):логично. подразумевается c# и его regexные классы....
данa строка формата:
string sourcePath = @"D:\CTS_FAXES\420\Family Maintenance";
надо вытаскивать то что на месте "420" в одну стринг и "Family Maintenance" в другую.
ваш ход маэстры!

Ну так бы сразу и сказали! А то слова непонятные пишуть, какие-то закорючки в коде рисують....

а всего делов то:
string[] str = sourcePath.Split('\\');
string substring1 = str[str.Length-2];
string substring2 = str[str.Length-3];
Добавлено: 14 фев 2006, 19:50
CdR
Picasso писал(а):C# не знаю но нутром чую XPATH там должон быть каким-то боком, хотя бы как часть XSLT.
ШО? ОПЯТЬ?
Ну так бы сразу и сказали! А то слова непонятные пишуть, какие-то закорючки в коде рисують.... icon_lol.gif а всего делов то:
на самом деле все наверняка в следующей итерации упрется во что-нибудь типа строки "D:\CTS_FAXES\420\Family Maintenance\"
или "D:\CTS_FAXES\<куча всего>\420\\Family Maintenance\<еще много чего>"
IMHO: regexp в таких разборах полетов разумно использовать.
С# сам ни разу не нюхал, но первый же запрос в google подсказал пару примеров,
типа такого
Так что сделать по образцу -- никаких проблем.
Ну разве что найти где этот C# водится в живом виде

Добавлено: 14 фев 2006, 20:07
Stanislav
CdR писал(а):...на самом деле все наверняка в следующей итерации упрется во что-нибудь типа строки "D:\CTS_FAXES\420\Family Maintenance\"
или "D:\CTS_FAXES\<куча всего>\420\\Family Maintenance\<еще много чего>"
Ну такие строки это вряд ли появятся - они ж не с потолка упали - это имена директорий.
Добавлено: 14 фев 2006, 21:04
AlexK
Не маэстры вы (кроме CDr)!
Во я как написал
Код: Выделить всё
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;
Ну а если сер'езно - всем спасибо! Форум это сила!
Добавлено: 14 фев 2006, 21:22
CdR
Stanislav писал(а):Ну такие строки это вряд ли появятся - они ж не с потолка упали - это имена директорий.
Ну, мало ли в результате чего они получатся могут. Мы то этого знать не можем, только предполагать.
Во я как написал
И шо? заработало?

Я точно не маэстр, уж в C# так вообще тока названиё слыхал.
PS: Кстати, мои предположения насчет стоки, таки частично оправдались:
Код: Выделить всё
D:\CTS_FAXES\420\Family Maintenance\blah.pdf
Добавлено: 15 фев 2006, 04:16
Picasso
CdR писал(а):Picasso писал(а):C# не знаю но нутром чую XPATH там должон быть каким-то боком, хотя бы как часть XSLT.
ШО? ОПЯТЬ?
А шо, уже было?
Добавлено: 15 фев 2006, 07:54
Stanislav
CdR писал(а):...PS: Кстати, мои предположения насчет стоки, таки частично оправдались:
Код: Выделить всё
D:\CTS_FAXES\420\Family Maintenance\blah.pdf
Ну так, кстати, то что я написал - абсолютно работоспособно для этого случая! Результат будет тот же самый...