1

アプリケーションでこの正規表現を使用しようとしていますが、何らかの理由で C# が完全な文字列として受け入れません。

私が間違っていなければ、それは式の中のいくつかの二重引用符に関係していますが、エスケープされているように見えます。

正規表現は次のとおりです。

^((([hH][tT][tT][pP][sS]?|[fF][tT][pP])\:\/\/)?([\w\.\-]+(\:[\w\.\&%\$\-]+)*@)?((([^\s\(\)\<\>\\\"\.\[\]\,@;:]+)(\.[^\s\(\)\<\>\\\"\.\[\]\,@;:]+)*(\.[a-zA-Z]{2,4}))|((([01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5])))(\b\:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)\b)?((\/[^\/][\w\.\,\?\'\\\/\+&%\$#\=~_\-@]*)*[^\.\,\?\"\'\(\)\[\]!;<>{}\s\x7F-\xFF])?)$

そして、これが私がそれを宣言しようとしている方法です:

[RegularExpression(@"^((([hH][tT][tT][pP][sS]?|[fF][tT][pP])\:\/\/)?([\w\.\-]+(\:[\w\.\&%\$\-]+)*@)?((([^\s\(\)\<\>\\\"\.\[\]\,@;:]+)(\.[^\s\(\)\<\>\\\"\.\[\]\,@;:]+)*(\.[a-zA-Z]{2,4}))|((([01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5])))(\b\:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)\b)?((\/[^\/][\w\.\,\?\'\\\/\+&%\$#\=~_\-@]*)*[^\.\,\?\"\'\(\)\[\]!;<>{}\s\x7F-\xFF])?)$")]

フォーマットについて申し訳ありませんが、最適な表示方法がわかりません...

繰り返しますが、二重引用符で囲まれた場合、C# は文字列として認識しません。

この式を C# で使用するにはどうすればよいですか?

4

2 に答える 2

3

文字列リテラルを使用し、次の@ように二重引用符を二重にします@"a ""b"" c"

于 2013-10-23T20:45:42.297 に答える
0

2回逃げる必要があります。1 回は\正規表現用、もう 1 回は正規表現用です。

各エスケープシーケンスは

\\d

代わりに

于 2013-10-23T20:44:37.670 に答える