我目前正在编写一个词汇表算法,用于检查用户是否正确输入了该词.我有以下情况:该单词的正确解决方案是"part1,part2".用户应该能够输入"part1"(答案1),"part2"(答案2)或"part1,part2"(答案3).我现在尝试将用户给出的字符串与以下自动创建的正则表达式匹配:
^(part1|part2)$
Run Code Online (Sandbox Code Playgroud)
这只会使答案1和2正确,而答案3则是错误的.我现在想知道是否有类似于|的运算符 这说and/or
的不是either...or
.
愿任何人帮我解决这个问题吗?
Mit*_*hon 267
我将假设你想动态地构建一个正则表达式,以包含除part1和part2之外的其他单词,并且你想要命令无关紧要.如果是这样,你可以使用这样的东西:
((^|, )(part1|part2|part3))+$
Run Code Online (Sandbox Code Playgroud)
积极匹配:
part1
part2, part1
part1, part2, part3
Run Code Online (Sandbox Code Playgroud)
负面比赛:
part1, //with and without trailing spaces.
part3, part2,
otherpart1
Run Code Online (Sandbox Code Playgroud)
这是否可以不交替使用?
^((part)1(, \22)?)?(part2)?$
Run Code Online (Sandbox Code Playgroud)
或者为什么不呢?
^((part)1(, (\22))?)?(\4)?$
Run Code Online (Sandbox Code Playgroud)
第一个适用于所有条件,第二个适用于所有条件part2
(使用GNU sed 4.1.5)