和/或正则expression式中的操作符

我是currentry编程的词汇algorithm,检查用户是否input正确的单词。 我有以下情况:正确的解决scheme是“part1,part2”。 用户应该可以input“part1”(答案1),“part2”(答案2)或“part1,part2”(答案3)。 我现在尝试用下面的自动创build的正则expression式来匹配用户给出的string:

^(part1|part2)$ 

这只会返回答案1和2正确答案3将是错误的。 我现在想知道是否有类似于|的操作符 说“和/或”而不是“或者…”。 有人能帮我一下吗?

我假设你想dynamic构build一个正则expression式来包含除了part1和part2之外的其他单词,而且你希望命令不重要。 如果是这样,你可以使用这样的东西:

 ((^|, )(part1|part2|part3))+$ 

正面匹配:

 part1 part2, part1 part1, part2, part3 

负面匹配:

 part1, //with and without trailing spaces. part3, part2, otherpart1 
 '^(part1|part2|part1,part2)$' 

它工作吗?

这个工作没有改变吗?

 ^((part)1(, \22)?)?(part2)?$ 

或者为什么不呢?

 ^((part)1(, (\22))?)?(\4)?$ 

第一个适用于所有条件,除了第二part2 (使用GNU sed 4.1.5)

或者你可以使用这个:

 ^(?:part[12]|(part)1,\12)$ 

不是正则expression式的专家,但你可以做^((part1|part2)|(part1, part2))$ 。 换言之:“第1部分或第2部分或两者兼有”