Регулярное выражение для сопоставления полных строк текста, исключая crlf

#c# #.net #regex

#c# #.net #регулярное выражение

Вопрос:

Каким был бы шаблон регулярного выражения для соответствия каждой строке данного текста?

Я пытаюсь ^(. )$ , но оно включает crlf…

Ответ №1:

Просто используйте RegexOptions.Многострочный.

Многострочный режим. Изменяет значение ^ и $ таким образом, чтобы они совпадали в начале и конце, соответственно, любой строки, а не только в начале и конце всей строки.

Пример:

 var lineMatches = Regex.Matches("Multirnlines", "^(. )$", RegexOptions.Multiline);
  

Ответ №2:

Я не уверен, что вы подразумеваете под «сопоставлять каждую строку заданного текста», но вы можете использовать символьный класс для исключения символов CR и LF:

 [^rn] 
  

Ответ №3:

Формулировка вашего вопроса кажется немного неясной, но звучит так, как вы хотите RegexOptions.Multiline System.Text.RegularExpressions пространстве имен). Это параметр, который вы должны установить в вашем объекте RegEx. Это должно привести к ^ и $ совпадению начала и конца строки, а не всей строки.

Например:

 Regex re = new Regex("^(. )$", RegexOptions.Compiled | RegexOptions.Multiline);
  

Ответ №4:

Вы пробовали:

 ^(. )r?n$
  

Таким образом, группа соответствия включает в себя все, кроме CRLF, и требует наличия новой строки (по умолчанию в Unix), но принимает возврат каретки впереди (по умолчанию в Windows).

Комментарии:

1. ^(. ?) r? n $ или оно жадно съедает r (. == жадный, . ? == нежадный)

Ответ №5:

Я полагаю, вы используете многострочный вариант? В этом случае вы захотите явно сопоставить новую строку с » n». (замените » r n» соответствующим образом.)