首页 > 解决方案 > LHS / RHS和运算符中除法表达式的正则表达式

问题描述

我想用>运算符划分表达式。我想识别任何使用>运算符的表达式并将其分为三组:LHS, RHS and >

我正在使用以下正则表达式

(.+)(>)(.+)

我错误地识别了组

5 > ${a > 0 ? a :6 }

它检索

Group1: 5 > ${a
Group2: >
Group3: 0 ? a :6 }

哪个是错误的,它应该检索

Group1: 5
Group2: >
Group3: ${a > 0 ? a :6 }

任何使它工作的建议。我可以在正则表达式中添加一些应该忽略>内部使用的运算符的内容吗${}

标签: javaregexgroovy

解决方案


我可以在正则表达式中添加一些应该忽略>内部使用的运算符的内容${}

您也许可以使用这个>在内部跳过的正则表达式{...}(假设没有不平衡和转义的括号)。

(\${[^}]+}|[^>]+?)\h*>(?![^{}]*})\h*(.+)

正则表达式演示

正则表达式详细信息:

  • (\${[^}]+}|[^>]+?): 第 1 组:匹配格式为${...}格式的字符串或任何非格式字符的 1+>
  • \h*>: 匹配 0 个或多个空格,后跟一个>
  • (?![^{}]*})\h*: 否定前瞻断言我们没有 a}没有 a{}
  • (.+): 第 2 组:匹配剩余字符

推荐阅读