Regex
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- CdR
- Графоман
- Сообщения: 11245
- Зарегистрирован: 11 окт 2004, 19:27
- Откуда: Европа, центр, за углом направо.
Re: Regex
Глубокомысленно...ajkj2em писал(а):regexp match'уют, "вытаскивать" им вообще говоря проблематично
D:\CTS_FAXES\420\Family Maintenance\
Код: Выделить всё
#!/usr/bin/perl
$_=<>;
/.*\\([^\\]*)\\([^\\]*)\\$/;
print "$1 $2";
- ajkj3em
- Маньяк
- Сообщения: 2063
- Зарегистрирован: 12 ноя 2006, 06:53
Re: Regex
о том и речь. regular expression is just that - an expression.CdR писал(а):Далее могут идти пачки вариаций на тему языков и вводимых строк, о которых в вопросе ни слова.
как и чем input токенизируется зависит от тулза или языка.
- CdR
- Графоман
- Сообщения: 11245
- Зарегистрирован: 11 окт 2004, 19:27
- Откуда: Европа, центр, за углом направо.
Re: Regex
Вот только не надо так к словам придираться. Цель и смысл вопроса более менее понятны. А то я тоже начну спрашивать о каких именно regexp речь идет.ajkj2em писал(а):о том и речь. regular expression is just that - an expression.
как и чем input токенизируется зависит от тулза или языка.
PS: ушел пить водку с вареньем.

-
- Пользователь
- Сообщения: 118
- Зарегистрирован: 21 окт 2005, 03:16
- Откуда: было оттуда, теперь отсюда
- Picasso
- Пользователь
- Сообщения: 102
- Зарегистрирован: 17 фев 2003, 18:24
- Откуда: Due South
"Остап играл в шахматы второй раз в жизни"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]"/>
- Stanislav
- Mr. Minority Report
- Сообщения: 45560
- Зарегистрирован: 19 окт 2005, 16:33
- Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo
Ну так бы сразу и сказали! А то слова непонятные пишуть, какие-то закорючки в коде рисують....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];
- CdR
- Графоман
- Сообщения: 11245
- Зарегистрирован: 11 окт 2004, 19:27
- Откуда: Европа, центр, за углом направо.
ШО? ОПЯТЬ?Picasso писал(а):C# не знаю но нутром чую XPATH там должон быть каким-то боком, хотя бы как часть XSLT.

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

- Stanislav
- Mr. Minority Report
- Сообщения: 45560
- Зарегистрирован: 19 окт 2005, 16:33
- Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo
-
- Пользователь
- Сообщения: 118
- Зарегистрирован: 21 окт 2005, 03:16
- Откуда: было оттуда, теперь отсюда
Не маэстры вы (кроме 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;
- CdR
- Графоман
- Сообщения: 11245
- Зарегистрирован: 11 окт 2004, 19:27
- Откуда: Европа, центр, за углом направо.
Ну, мало ли в результате чего они получатся могут. Мы то этого знать не можем, только предполагать.Stanislav писал(а):Ну такие строки это вряд ли появятся - они ж не с потолка упали - это имена директорий.
И шо? заработало?Во я как написал

Я точно не маэстр, уж в C# так вообще тока названиё слыхал.
PS: Кстати, мои предположения насчет стоки, таки частично оправдались:
Код: Выделить всё
D:\CTS_FAXES\420\Family Maintenance\blah.pdf
- Picasso
- Пользователь
- Сообщения: 102
- Зарегистрирован: 17 фев 2003, 18:24
- Откуда: Due South
- Stanislav
- Mr. Minority Report
- Сообщения: 45560
- Зарегистрирован: 19 окт 2005, 16:33
- Откуда: Moscow - Richmond - New Wesт - Burnaby - PoCo
Ну так, кстати, то что я написал - абсолютно работоспособно для этого случая! Результат будет тот же самый...CdR писал(а):...PS: Кстати, мои предположения насчет стоки, таки частично оправдались:Код: Выделить всё
D:\CTS_FAXES\420\Family Maintenance\blah.pdf