регулярное выражение не может распознать "\ n"? - PullRequest
0 голосов
/ 14 декабря 2009

так что в конце (после нескольких дней отладки) я обнаружил проблему. Это не в регулярных выражениях вообще: /. Похоже, я обрезал экстра пробелы

intput= Regex.Replace(input, "\\s+", " ");

поэтому все новые строки заменяются на "". Глупый! Модератор, удалите это, если излишне!

У меня есть регулярное выражение для токенизации некоторого текста, и это выглядит так:

"(?<html>Ç)|
(?<number>\\d+(?:[.]\\d+)?(?=[][ \f\n\r\t\v!?.,():;\"'„Ç]|$))|
(?<other>(?:[^][Ç \f\n\r\t\v!?.,():;\"'„A-Za-zčćšđžČĆŠĐŽäöÖü][^ Ç\f\n\r\t\vA-Za-zčćšđžČĆŠĐŽäöÖü]*)?[^][ Ç\f\n\r\t\v!?.,():;\"'„A-Za-zčćšđžČĆŠĐŽäöÖü](?=[][!?.,():;\"'„]*(?:$|[ Ç\f\n\r\t\v])))|
(?<word>(?:[^][ Ç\f\n\r\t\v!?.,():;\"'„][^ Ç\f\n\r\t\v]*)?[^][ Ç\f\n\r\t\v!?.,():;\"'„])|
(?<punctuation>[][ \f\n\r\t\v!?.,():;\"'„])"

Проблема в этой части: (?<punctuation>[][ \f\n\r\t\v!?.,():;\"'„]). Поэтому, когда я набираю текст с помощью ввода "\n\n", он группируется в соответствии со знаками препинания: " "," " - другими словами, пробел и пробел ... и я не знаю почему?

Ответы [ 3 ]

5 голосов
/ 14 декабря 2009

Я могу ошибаться, но вам нужно передать String as String в RegEx ... означает, что вам нужно избежать обратной косой черты.

... (?=[][ \\f\\n\\r\\t\\v!?.,():;\\" ...

В противном случае C # заменит \ n переносом строки в выражении RegEx.

Редактировать: Также можно использовать буквенные строки , но необходимо пометить с начала @ (см. Ответ Мартина).

2 голосов
/ 14 декабря 2009

Если вы поместите @ перед строкой, вы можете использовать одиночные обратные слеши, и разрывы строк будут распознаваться.

 @"(?<html>Ç)|
0 голосов
/ 14 декабря 2009

Набор RegexOptions.IgnorePatternWhiteSpace

Обновление:

Вы уверены, что [^] правильно? Если это не какая-то группа символов (которую я никогда не использовал), это будет то же самое, что . То же самое касается []. Возможно, я просто не использовал все RE раньше: p

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...