Я пытаюсь найти каждый шаблон «a -> b, c, d» во входной строке. Узор я использую следующее:EOL Special Char не соответствует
"^[ \t]*(\\w+)[ \t]*->[ \t]*(\\w+)((?:,[ \t]*\\w+)*)$"
Эта модель представляет собой C# шаблон, то «\ т» относится к табулирования (его единственный спасся litteral, intepreted с помощью API .NET String), то «\ w» ссылается на хорошо известный регулярный регулярный литерный класс, двойное экранирование которого интерпретируется как «\ w» .NET STring API, а затем как «WORD CLASS» API .NET Regex.
вход является:
a -> b
b -> c
c -> d
Функция:
private void ParseAndBuildGraph(String input) {
MatchCollection mc = Regex.Matches(input, "^[ \t]*(\\w+)[ \t]*->[ \t]*(\\w+)((?:,[ \t]*\\w+)*)$", RegexOptions.Multiline);
foreach (Match m in mc) {
Debug.WriteLine(m.Value);
}
}
Выход:
c -> d
На самом деле, существует проблема с конца строки "$" специальный знак. Если я вставляю «\ r» перед «$», он работает, но я думал, что «$» будет соответствовать любому завершению строки (с опцией Multiline), особенно \ r \ n в среде Windows. Разве это не так?
+1 Трудно поверить ... –
Благодарим вас за ответ. И действительно, это удивительный вывод :) –
Любопытно, есть ли флаг, который можно настроить так, чтобы система соответствовала данным, например, флаг O_BINARY в c/C++. – Dave