如何编写正则表达式模式以获取c#中字符串的子字符串

时间:2018-05-08 10:46:45

标签: c# regex

我需要使用regex从给定字符串中提取子字符串。

我正在解析c#代码,我需要获取检查空值的变量。

注意:我将c#代码保存在文本文件中,并将这些行读为字符串值

我的字符串可以采用以下格式。

string code = "if (!(strOld_Value == "" && strNew_Value == "") || (strOld_Value == "" && strNew_Value.ToLower() != "") ";

从上面的输入字符串中,我需要对变量名称进行extarct,检查是否为空值。即)我想要的输出应该是

strOld_Value == "" strNew_Value == "" strOld_Value == "" strNew_Value.ToLower() != ""

我的字符串不一定总是在同一个模式中,有时我的字符串可以是一个简单的字符串,如下所示,

string code = "if (Name == "")"

在上面的例子中,我想要的输出是, Name == ""

是否可以为此方案编写通用的正则表达式模式?在此先感谢。

3 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式模式:

[_0-9a-zA-Z\s\.]+[()\s]*(==|!=)\s*\"[0-9a-zA-Z]*\"

答案 1 :(得分:1)

你可以试试这个正则表达式:

(\w+(\.\w+[\)\(]*)*\s*(==|\!=)\s*\"\")
  • [\w]+ - 匹配任何单词字符一次或多次
  • (\.\w+[\)\(]*)* =(匹配.及其后的任何字符,以及 可以有括号)零次或多次
  • \s* - 可选空间
  • (==|\!=) - ==!=
  • \s* - 可选空间
  • \"\" - 匹配空值(""

答案 2 :(得分:1)

正如消费者所说,听起来你需要能够解析C#代码并访问解析器识别的变量名称

参见S.O. How to programmatically parse and modify C# code