我处于一种需要从字符串(表达式)提取单词/变量的情况下。我试图做到这一点。以下情况是有效的:
OK/Test(ANSWER[12])+SUM(Test(ANSWER[..]))*OK+ANSWER[14]
我需要提取“确定”“变量”。我设法提取了其他组件,例如ANSWER [..]。这些变量是动态的。
我已经尝试过类似的事情:
/[a-zA-Z]*(?!\(|\[)/g
但这还会返回SU(从SUM,这是不希望的)
预先感谢:)
编辑:澄清
我需要提取仅由空格(字符串的开头或结尾)或+-* /运算符包围的单词。之前或之后带有()[]的单词应被忽略。
答案 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);