2012-04-15 3 views
0

Входнойкак разделить эту строку, используя регулярное выражение в C#

-n. 1 geographical map or plan, esp. for navigation. 2 sheet of information in the form of a table, graph, or diagram. 3 (usu. in pl.) colloq. listing of the currently best-selling pop records. -v. make a chart of, map. [Latin charta: related to *card1]

Мне нужно разделить это как этот
-n.
1 geographical map or plan, esp. for navigation.
2 sheet of information in the form of a table, graph, or diagram.
3 (usu. in pl.) colloq. listing of the currently best-selling pop records.
-v.
make a chart of, map. [Latin charta: related to *card1]

Мой Экспрессия здесь ((—\w\.)|(\d\s))(([^\d—])*)

Но это терпит неудачу на card1]

Как решить эту проблему?

Как свести на нет digit followed with space?

ответ

3

Использование опережение:

((-\w\.)|(\d\s))(([^\d-]|(\d(?!\s))|(-(?!\w\.)))*) 

Вы хотите любое количество не-цифр или не-тира ([^\d-]), но вы также хотите, чтобы цифры, которые не сопровождаются пробелами (\d(?!\s)) и дефисами, что Арен» t, за которыми следуют символы и периоды (-(?!\w\.)).

-1

Вы должны сделать Regex.Escape вашей входной строке.

+1

Что это значит, вопрос? 'Regex.Escape' имеет смысл только в том случае, если вход должен использоваться как часть регулярного выражения, и весь пользовательский ввод должен соответствовать буквально, например. '' 'следует подбирать буквально. – stema

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