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

本文关键字:字符串 显示 正则表达式 | 更新日期: 2023-09-27 18:36:33

我正在尝试在我的应用程序中使用此正则表达式,但由于某种原因,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# 中使用此表达式?

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

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

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

每个转义序列应为

''d

或者