TNS名ファイルを解析する正規表現があります。ただし、特定のTNSNamesファイルでハングします。問題は、一致する文字列のパーツの後にスペースがあるかどうかまで追跡されてHOST=
います。パターンの適切性を無視し、問題を修正する方法(これは対処されています)私が知りたいのは、Regex.Match(invalid)
呼び出しが返されないため、入力の変更によってアプリケーションがハングする理由です
string valid = "SOMENAME = (DESCRIPTION= " +
"(ADDRESS= (PROTOCOL=TCP) (HOST = localhost) (PORT=1521) ) " +
"(CONNECT_DATA= (SERVICE_NAME=ABC)))";
string invalid = "SOMENAME = (DESCRIPTION= " +
"(ADDRESS= (PROTOCOL=TCP) (HOST =localhost) (PORT=1521) ) " +
"(CONNECT_DATA= (SERVICE_NAME=ABC)))";
Regex regex = new Regex("SOMENAME" + @"[^=]*=(\s|[^H]*)*HOST\s*=\s(?<host>[^\)]*)\s*\)", RegexOptions.Multiline | RegexOptions.IgnoreCase);
//this line is fine
Match match = regex.Match(valid);
//this line causes visual studio to hang
match = regex.Match(invalid);