Regex 捕获由可选和/或分隔的重复组

Regex 捕获由可选和/或分隔的重复组,regex,regex-lookarounds,regex-group,Regex,Regex Lookarounds,Regex Group,这是我正在努力解决的普遍模式 如果条件1和|或条件2则操作1和|或操作2 条件和动作通常有以下模式: 情况>=10或情况b=off | on 问题在于重复和/或在条件/动作中,可能完全不存在(0个和/或计数)或尽可能多(*) 示例字符串: 情况>=10或情况B=off,情况C=on situation=on 以下是我尝试过但需要帮助的东西: ^\s*(\w+)\s*(=|\>=)\s*(\d+|\w+)\s*(and|or)? 如何修改正则表达式,以便它可以对每个条件/操作进行分组,这

这是我正在努力解决的普遍模式

如果条件1和|或条件2操作1和|或操作2

条件和动作通常有以下模式:
情况>=10或情况b=off | on

问题在于重复和/或在条件/动作中,可能完全不存在(0个和/或计数)或尽可能多(*)

示例字符串:
情况>=10或情况B=off,情况C=on

situation=on

以下是我尝试过但需要帮助的东西:

^\s*(\w+)\s*(=|\>=)\s*(\d+|\w+)\s*(and|or)?


如何修改正则表达式,以便它可以对每个条件/操作进行分组,这些条件/操作可能由和/或分隔,也可能不由和/或分隔?

您可以尝试使用以下正则表达式模式:

(.*?)(?:\s+(?:and|or)|\s*$)

这将在第一个捕获组中匹配可能的
和/或
分隔符之间的所有内容,包括直到字符串结尾的最后一个术语


请注意,如果您使用的是编程语言,那么更简单的选择可能是在
\s*\b(?:and |或)\b\s*
上拆分,这将生成匹配项的数组/集合。

您可以使用
\G
锚定在上一次匹配后继续

(?:^|\G)(?<variable>\w+)\s*(?<operator>>?=)\s*(?<value>\w+)\s*(?:(?<conjunct>and|or) )?
(?:^ |\G)(?\w+)\s*(?>?=)\s*(?\w+)\s*(?:(?和|或))?

您使用的是什么编程语言?我希望我能选择这两种语言作为答案。感谢您对命名groupds的帮助