是否存在可以在C#中进行修改的正则表达式双引号匹配语法?

以下简单的正则表达式包含必须匹配的四个双引号。我并不是想为此特定正则表达式提供解决方案,而只是将其用作一般示例:

\s*"Hello"\s*"world"\s*

在编写包含必须与双引号匹配的正则表达式的C#代码时,我经常遇到的问题是我不得不使用的繁琐语法,因为C#中的字符串文字是双引号分隔的。我使用了以下两种不同的技术,但我都不喜欢。除了将原始正则表达式屠宰为可接受的C#语法所需的额外复杂性之外,将语法转换回原始正则表达式以进行其他开发是一个真正的痛苦。 regex引擎和C#语言解析器是否有同样可以接受的形式?

第一个hack使用转义字符来转义必须在正则表达式中实际出现的反斜杠和双引号。我认为这是最容易出错的方法,因为对于更复杂的正则表达式,您会陷入反斜杠:

"\\s*\"Hello\"\\s*\"world\"\\s*"

第二次破解将原始正则表达式分解为多个部分并将它们连接起来。作为字符串文字且包含正则表达式反斜杠的段之前有一个@字符,以使反斜杠按字面意义而不是转义字符。与以前的方法相比,我认为这更冗长但不易出错:

@"\s*" + '"' + "Hello" + '"' + @"\s*" + '"' + "world" + '"' + @"\s*"
评论
大雨噼啪响
大雨噼啪响

@"\s*""Hello""\s*""world""\s*" gives the string \s*"Hello"\s*"world"\s*. Simply double the double quotes in an @ prepended string to display a double quotes

Fiddle

点赞
评论