Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск регулярными выражениями 
:(
    Опции темы
Metalist
Дата 23.8.2011, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 2.3.2003

Репутация: нет
Всего: нет



Задача.

имеем строку вида: 

Код

Having/VBG done/VBN the/DET assignment/NN he/NN left/VBD home/NN ./.

или
Код

After/DETworking/VBG hard/DET we/NN felt/VBD tired/VBN ./.


собственно предложение с тэгами слов (глагол, сущ-е, прил-е и т.д.)

задача найти последнее слово-глагол плюс все что осталось до конца строки

в примере 1 должно быть left/VBD home/NN ./.
в примере 2 должно быть tired/VBN ./.

пробуем так
Код

string test = "Having/VBG done/VBN the/DET assignment/NN he/NN left/VBD home/NN ./.";
            string pattern = @"(\w+)(/V\w{1,3})";
            
            Regex regex = new Regex(pattern,System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                       
            Match match = regex.Match(test);
            
            while (match.Success)
            {
                Console.WriteLine("Позиция {0} Значение {1}", match.Index, match.Value);
                match = match.NextMatch();
            }


получаем все слова с глагольными тегами: Having/VBG done/VBN left/VBD

делаю так:
Код

string pattern = @"((\w+)(/V\w{1,3})){1}(.+)";


и получаю 1 результат все предложение  smile 

помогите составить регулярку
PM MAIL ICQ   Вверх
Fortnox
Дата 24.8.2011, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 14
Всего: 22



Пожалуйста:
Код

(?<match>(\w+)/VB.(?!.*/VB.)+.*)

PM MAIL   Вверх
Metalist
Дата 24.8.2011, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 2.3.2003

Репутация: нет
Всего: нет



можно подробно объяснить-разобрать вырежение? я пока еще не силен в регулярках smile 
PM MAIL ICQ   Вверх
Fortnox
Дата 24.8.2011, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 14
Всего: 22



Попробую)
?<match> - группировка, чтобы потом можно было по имени достать нужное нам значения
(\w+) - целое слово перед "/VB.", нужно нам по задаче. Скобки кстати, можно убрать.
/VB.(?!.*/VB.) - /VB. (. - любой символ), но так как этот символ у нас буква в верхнем регистре, лучше переписать это выражение так: 
/VB[A-Z](?!.*/VB[A-Z])
(?!.*/VB[A-Z]) - грубо говоря, ищем последнее вхождение /VB[A-Z] в строке.
+.* - до конца строки

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0941 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.