正则表达式不会在C#中显示为完整字符串

时间:2013-10-23 20:42:40

标签: c# regex

我正在尝试在我的应用程序中使用this regular expression,但由于某种原因,C#不会将其视为完整的字符串。

如果我没有弄错的话,它与表达式中的两个双引号有关,但它看起来像是他们被逃脱了。

这是RegEx:

^((([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#中使用此表达式?

2 个答案:

答案 0 :(得分:3)

使用@的字符串文字并加倍双引号,例如@"a ""b"" c"

答案 1 :(得分:0)

你必须逃脱两次。一次用于\,一次用于正则表达式。

每个转义序列应为

\\d

替代地