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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Составление регулярного выражения 
:(
    Опции темы
maque
Дата 8.9.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема такая: вобщем, есть строка, преставляет собой ФИО (или ИОФ) человека. Причем, написана может быть по всякому, ИО могут быть инициалами, после которых точки, и возможно 1 пробел (не обязательно), Нужно вырипать оттуда по отдельность Ф, И и О, Если инициал - только букву. Все пробелы и точки порезать.
Какое выражение для этого можно составить???

писал такое
Код

(?<lastname>.+)(\s|\u002e)(?<firstname>.+)(\s|\u002e)(?<middlename>.+)(\s|\u002e)

но неправильно работает, когда например пишется И.И. Иванов..(((  smile 

Это сообщение отредактировал(а) maque - 8.9.2007, 20:56
PM MAIL   Вверх
mr.DUDA
Дата 9.9.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



А как узнать, что такое "И", если строка может содержать как ИОФ так и ФИО ? Тут надо ставить ограничение: или, или. По регулярному выражению у меня вопрос только про \u002e, не проще ли экранировать точку обратным слешем.


--------------------
user posted image
PM MAIL WWW   Вверх
maque
Дата 9.9.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(mr.DUDA @ 9.9.2007,  10:49)
А как узнать, что такое "И", если строка может содержать как ИОФ так и ФИО ? Тут надо ставить ограничение: или, или. По регулярному выражению у меня вопрос только про \u002e, не проще ли экранировать точку обратным слешем.

Фамилия не может из одной буквы состоять, поэтому если сначала идет одна буква, то это будет сокращение имени, а значит и вид ИОФ.
PM MAIL   Вверх
Experimenter
Дата 10.9.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Фамилия не может из одной буквы состоять


Самые короткие фамилии

Самая короткая фамилия состоит из одной буквы — О, распространена в Корее. В телефонных справочниках США (1973–1981 гг.) она встречается 52 раза, в Бельгии — 12 раз. Эта фамилия ставит в тупик тех, кто занимается проблемами защиты компьютеров. А. Росс Эклер, изучавший телефонные справочники США, обнаружил, что все буквы алфавита, кроме Q, употребляются в качестве фамилий. Существуют два бирманских имени, состоящие из одной буквы, — Е (спокойный), U (яйцо). Буква U, стоящая перед именем, означает «дядя». Среди 47 млн. фамилий, зарегистрированных в английском Департаменте здравоохранения и социального обеспечения, имеется шесть фамилий, состоящих из одной буквы: «A», «B», «J», «N», «O», «X». Английские фамилии «By» и «On», состоящие из двух букв, известны с давних времен. Недавно к ним прибавились новые подобные фамилии — «Oy», «Za» и другие. Уже поколениям новорождённых в семье Линкольн Тейбер из Эссекса дают имя, состоящее из одной буквы – A.
http://verycrazystudent.blogspot.com/2007/...og-post_30.html

Так что может теоретически. Не факт, что тебе не попадется, щас корейцев много в России. Единственное, что точка после фамилии не ставится.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
mr.DUDA
Дата 10.9.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Попробуй это, у меня вроде как работает:
Код
(^(\s)*(?<lastname>\w{2,})(\s)*(?<firstname>\w{1})(\s|\.)*(?<middlename>\w{1})(\s|\.)*)|((?<firstname>\w{1})(\s|\.)*(?<middlename>\w{1})(\s|\.)*(?<lastname>\w+))



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

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


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

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


 




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


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

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