帮助.net正则表达式

时间:2011-03-30 17:29:16

标签: .net regex

  1. var a = @“Blah< a href =”“{0}”“> blah< / a>”
  2. if(b ==“”)
  3. if(c ==“”)
  4. var d =“”
  5. var e =“”

寻找匹配第2 - 5行而不是1行的.Net正则表达式。输入是每一行。基本上,我想要区分A.在@前缀字符串文字中使用“”和使用“”使用“”,其中string.Empty会更好。
=\s*""是我的开始,但它匹配所有5行。如何将其修改为不匹配1,但匹配其他?在某种程度上修改它以合并^ @?

2 个答案:

答案 0 :(得分:1)

保留,这符合问题的五个案例:

^[^=]*==?\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

然而,在这种情况下使用正则表达式是危险的,因为它对语言语法不敏感。这很容易想出一些代码,其中这个正则表达式匹配但不是你想要的,或者当你期望它时这个常规expresison不匹配的地方。一个真正全面的正则表达式几乎不可能编写和维护。

答案 1 :(得分:0)

一个简单的方法是:

={1,2}\s*""

这显然也与你的第一个例子相符。为了不匹配您的第一个示例以及该模式未用作语句的其他情况,您或多或少需要为C#代码构建语法分析器。
我不认为,Regex是这项任务的最佳解决方案......