捕捉方程参数的正则表达式

时间:2017-12-14 10:33:30

标签: regex vba

我有一组包含两组参数的数学表达式:

  1. 字母,数字和特殊字符的任意组合
  2. 类似"HUB_XX"的参数,其中XX是一个数字(一个或多个数字)
  3. 因此公式可能如下:(a1 * ((bb * HUB_1)+c))+(d * ((e * HUB_1)+f))+13,56。 我的任务是首先捕获第一组中的所有参数,这意味着所有不是数学运算符(+-/*())或不是"HUB"参数(在这种情况下为HUB_1)或不是常数(13,56)。 在给定示例中应该导致匹配:a1,bb,c,d,e,f 在下一步中,我只需要匹配类似HUB_number

    的参数

    第二个表达式写起来相当简单,但我正在与第一个表达式进行斗争。 我的工作环境是VBA(Excel,Access)。

    有人可以就此提出建议吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

此正则表达式将检索您的第一组信息:

(?!HUB_\d+)\b[a-zA-Z][^+-\/*()]*\b

请注意,匹配的参数必须以字母开头。

请参阅此demo here

编辑:如果您希望能够使用希腊字符,则应添加\ p {Greek}参数:

(?!HUB_\d+)\b[a-zA-Z\p{Greek}][^+-\/*()]*\b

请注意,您必须使用u nicode选项才能生效。

请参阅此other demo