正则表达式,提取变量名

时间:2019-11-13 08:42:45

标签: c# regex

我处于一种需要从字符串(表达式)提取单词/变量的情况下。我试图做到这一点。以下情况是有效的:

OK/Test(ANSWER[12])+SUM(Test(ANSWER[..]))*OK+ANSWER[14] 

我需要提取“确定”“变量”。我设法提取了其他组件,例如ANSWER [..]。这些变量是动态的。

我已经尝试过类似的事情:

/[a-zA-Z]*(?!\(|\[)/g

但这还会返回SU(从SUM,这是不希望的)

预先感谢:)

编辑:澄清

我需要提取仅由空格(字符串的开头或结尾)或+-* /运算符包围的单词。之前或之后带有()[]的单词应被忽略。

1 个答案:

答案 0 :(得分:1)

您可以使用

(?<![^\s+*/-])\w+(?![^\s+*/-])

请参见regex demo

详细信息

  • (?<![^\s+*/-])-包含+-/*的空白边界
  • \w+-1个以上的字符字符
  • (?![^\s+*/-])-包含+-/*的空白边界

C#示例代码:

var results = Regex.Matches(text, @"(?<![^\s+*/-])\w+(?![^\s+*/-])")
        .Cast<Match>()
        .Select(x => x.Value);