Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用.net正则表达式的帮助 变量a=@“诸如此类” 如果(b==“”) 如果(c==“”) var d=“” var e=“”_.net_Regex - Fatal编程技术网

使用.net正则表达式的帮助 变量a=@“诸如此类” 如果(b==“”) 如果(c==“”) var d=“” var e=“”

使用.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#代码构建语法解析器。

正在寻找一个.Net正则表达式,它将匹配第2-5行,但不匹配第1行。输入是每一行。基本上,我想区分A.在@prefixed string文本中使用“”和B.在where string.Empty中使用“”会更好。

=\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*“”
。(请注意,问题是查找空字符串。)