从字符串中获取方程式

Get equations from string

我有以下模式的字符串

( var1=:key1:'any_value including   space and 'quotes'' AND/OR var2=:key2:'any_value...' AND/OR var3=:key3:'any_value...' )

我想从中得到以下结果。

:key1:'any_value including   space and 'quotes''
:key2:'any_value...'
:key3:'any_value...'

有人可以推荐 pattern/RE 吗?

失败的尝试:

首先,我可以将其拆分为 AND/OR,然后再次拆分 : 上的更多字符串,依此类推,但寻找可以做到这一点的单个 RE/Pattern。

您可以使用此带否定模式的正则表达式来匹配您的数据:

":[^:]+:'.*?'(?=\s*(?:AND(?:/OR)?|\)))"

RegEx Demo

分手:

:                         # match a literal :
[^:]+                     # match 1 or more characters that are not :
:                         # match a literal :
'                         # match a literal '
.*?                       # match 0 or more of any characters (non-greedy)
'                         # match a literal '
(?=\s*(?:AND(?:/OR)?|\))) # lookahead to assert there is AND/OR at the end or closing )

我认为这适合您的情况。
除非您知道引号解析,否则您无能为力。

原始:(?<==)(?:(?!\s*AND/OR).)+
引用:"(?<==)(?:(?!\s*AND/OR).)+"

展开:

 (?<= = )                  # A '=' behind
 (?:
      (?! \s* AND/OR )     # Not 'AND/OR' in front
      . 
 )+