2013-02-24 3 views
0

Добрый день ~ Я не очень хорошо разбираюсь в этом регулярном выражении. Так что мне нужна ваша помощь.Как найти строку между некоторыми символами с помощью regex в C#

Условие: Пользователи могут вводить адрес электронной почты и имя вместе. Я хочу извлечь адрес электронной почты и имя пользователя из строки.

string pattern1 = "Peter Jackson<[email protected]>"; 

Из этой строки я хочу, чтобы получить "Питер Джексон" и "<[email protected]>".

string pattern2 = "Peter Jackson([email protected])"; 

Однако люди всегда ошибаются, как показано ниже.

И они также могут использовать «[» вместо «<». так ...

string pattern3 = "Peter Jackson[[email protected]]"; 

Даже некоторые глупые пользователи могут вводить как ...

string pattern4 = "Peter Jackson{[email protected]}"; 

Итак, я должен был искать героев, которые "<", "(", «[ "и„{“. Я попытался

string regularExpressionPattern = @"^(<|(|[|{)(.*?)^(}|]|)|>)"; 

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

string pattern5 = "Peter Jackson<[email protected]>mistake"; 

Помогла ли вам эта проблема? Спасибо.

PS: Я знаю, как разделить строку с символом. Так что это не поможет. Мне нужно правильное регулярное выражение.

+0

Это поможет, если вы сказали * что * пошло не так. (Что вы ожидали? Что на самом деле произошло?) –

+0

Почему бы просто не спросить их полное имя и адрес электронной почты как два отдельных входа ...? – vcsjones

+0

@vcsjones Разработка - это не простая работа. Не так ли? ^^; –

ответ

1

Я считаю, что регулярное выражение, которое вы ищете выглядит следующим образом:

(.*?)[<([{](.*?)[>)\]}] 

Вы хотели бы группа 1 и группа 2.

+0

Огромное спасибо вам. –

+0

Я рад, что смогу помочь. –

0
(.*?)[([<{](.*?)[)\]>}] 

Я считаю, что это должно быть адекватным.

Имя будет в первой захваченной группе, и электронное письмо будет во втором.

+0

Спасибо вам тоже. Он также работает. Я не знал о группировке с []. –

0

Кажется, что (.*)[<\(\[{](.*)[>\)]}] работает для меня.

Группы для имени и адреса электронной почты.

http://regexr.com?33sq4 - мой тест.

+0

Извините, это не работает для меня. –

Смежные вопросы