和/或正则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部分或两者兼有”