使用.net正则表达式的帮助 变量a=@“诸如此类” 如果(b==“”) 如果(c==“”) var d=“” var e=“”
正在寻找一个.Net正则表达式,它将匹配第2-5行,但不匹配第1行。输入是每一行。基本上,我想区分A.在@prefixed string文本中使用“”和B.在where string.Empty中使用“”会更好。使用.net正则表达式的帮助 变量a=@“诸如此类” 如果(b==“”) 如果(c==“”) var d=“” var e=“”,.net,regex,.net,Regex,正在寻找一个.Net正则表达式,它将匹配第2-5行,但不匹配第1行。输入是每一行。基本上,我想区分A.在@prefixed string文本中使用“”和B.在where string.Empty中使用“”会更好。 =\s*”是我的开始,但它匹配所有5行。如何将其修改为不匹配1,但匹配其他?以某种方式修改它以合并^@?一个简单的方法是: ={1,2}\s*"" 这显然也将与您的第一个示例相匹配。为了不匹配您的第一个示例和其他不使用该模式作为语句的情况,您或多或少需要为C#代码构建语法解析器。
=\s*”
是我的开始,但它匹配所有5行。如何将其修改为不匹配1,但匹配其他?以某种方式修改它以合并^@?一个简单的方法是:
={1,2}\s*""
这显然也将与您的第一个示例相匹配。为了不匹配您的第一个示例和其他不使用该模式作为语句的情况,您或多或少需要为C#代码构建语法解析器。我不认为正则表达式是这项任务的最佳解决方案…有保留地说,这符合问题的五种情况:
^[^=]*==?\s*""
细分:
^ start of line
[^=]* any number of characters that are not equals
= a literal equals
=? an optional second equals
\s* any amount of whitespace ('@' here prevents a match)
"" an empty string
然而,在这种情况下使用正则表达式是危险的,因为它对语言语法不敏感。如果这个正则表达式匹配但不是您想要的,或者当您期望它匹配时,这个正则表达式不匹配,那么很容易找到一些代码。真正全面的正则表达式几乎不可能编写和维护。第5行呢?你能澄清一下吗?5号线怎么样?具体的标准是什么?输入是什么-整行还是整文本块?我的问题很模糊。。。输入可以是任意一行C#代码,还是有限制?下面是一些有趣的例子:
var/*不是“*/a=”你好“/”代码>,var a=@“var a=”“”代码>,变量foo(a)==(“”)代码>抱歉,我尝试了此表达式,但它与任何行都不匹配。如果将点星更改为引号,则此表达式将起作用:即^[^=]*=?\s*“”
。(请注意,问题是查找空字符串。)