#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» соответствующим образом.)