c# - 正则表达式,提取变量名
问题描述
我处于需要从字符串(表达式)中提取单词/变量的情况。我试图做到这一点。以下情况有效:
OK/Test(ANSWER[12])+SUM(Test(ANSWER[..]))*OK+ANSWER[14]
我需要提取“OK”“变量”。我设法提取了其他组件,例如 ANSWER[..] 例如,这些变量当然是动态的。
我已经尝试过类似的事情:
/[a-zA-Z]*(?!\(|\[)/g
但这也返回 SU(来自 SUM,这是不希望的)
提前致谢 :)
编辑:澄清
我需要提取仅由空格(字符串开头或结尾)或 +-*/ 运算符包围的单词。前面或后面有 ()[] 的单词应该被忽略。
解决方案
您可以使用
(?<![^\s+*/-])\w+(?![^\s+*/-])
查看正则表达式演示
细节
(?<![^\s+*/-])
- 包含+
、-
和的空白边界/
*
\w+
- 1+字字符(?![^\s+*/-])
- 包含+
、-
和 的空白边界/
*
C#示例代码:
var results = Regex.Matches(text, @"(?<![^\s+*/-])\w+(?![^\s+*/-])")
.Cast<Match>()
.Select(x => x.Value);
推荐阅读
- javascript - IJavaScriptExecutor.ExecuteScript 等到 ajax 完成
- php - 解码 UTF8 的问题
- javascript - 如何在 React Js 中单独更新一个子组件
- python - 即使窗口重叠,如何在 Qt(Python、Linux)中截取特定窗口的屏幕截图?
- python - Python将numpy数组输出为base64编码字符串而不是jpg
- azure - 将 Azure bot 部署到 azure 时出现 502 bad gateway
- c# - 将我的值类型转换为可为空的等价物
- azure - 在 Salesforce APEX 中实施 Azure Put Blob
- php - 使用 pre_get_posts 编辑影响 ACF 选项的 WooCommerce 商店循环
- keycloak - Keycloak 注册自定义所需操作