我目前正在编写一个词汇算法,它可以检查用户是否正确地输入了单词。我有以下情况: 正确的答案应该是“part1, part2”。 用户应能输入“part1”(答案1)、“part2”(答案2)或“part1, part2”(答案3)。 我现在尝试用以下自动创建的正则表达式匹配用户给定的字符串:
^(part1|part2)$
这只返回正确的答案1和2,而答案3将是错误的。我现在想知道是否有一个类似于|的运算符,它说的是and/or而不是either…or。
谁能帮我解决这个问题?
我目前正在编写一个词汇算法,它可以检查用户是否正确地输入了单词。我有以下情况: 正确的答案应该是“part1, part2”。 用户应能输入“part1”(答案1)、“part2”(答案2)或“part1, part2”(答案3)。 我现在尝试用以下自动创建的正则表达式匹配用户给定的字符串:
^(part1|part2)$
这只返回正确的答案1和2,而答案3将是错误的。我现在想知道是否有一个类似于|的运算符,它说的是and/or而不是either…or。
谁能帮我解决这个问题?
当前回答
使用 如果在vim中:
:s/{\|}/"/g
将替换{和}上的" 所以{lol}变成了"lol"
其他回答
或者你可以用这个:
^(?:part[12]|(part)1,\12)$
我假设您想动态地构建一个正则表达式来包含part1和part2以外的单词,并且您希望顺序无关紧要。如果是这样,你可以使用这样的东西:
((^|, )(part1|part2|part3))+$
积极的比赛:
part1
part2, part1
part1, part2, part3
消极比赛:
part1, //with and without trailing spaces.
part3, part2,
otherpart1
使用 如果在vim中:
:s/{\|}/"/g
将替换{和}上的" 所以{lol}变成了"lol"
'^(part1|part2|part1,part2)$'
这有用吗?
不是正则表达式的专家,但你可以做^((part1|part2)|(part1, part2))$。换言之:“第一部分或第二部分,或两者都有”