我目前正在编写一个词汇算法,它可以检查用户是否正确地输入了单词。我有以下情况: 正确的答案应该是“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。
谁能帮我解决这个问题?
当前回答
'^(part1|part2|part1,part2)$'
这有用吗?
其他回答
这种方法没有交替就能奏效吗?
^((part)1(, \22)?)?(part2)?$
或者为什么不是这个?
^((part)1(, (\22))?)?(\4)?$
第一个适用于所有条件,第二个适用于除第2部分以外的所有条件(使用GNU sed 4.1.5)
我假设您想动态地构建一个正则表达式来包含part1和part2以外的单词,并且您希望顺序无关紧要。如果是这样,你可以使用这样的东西:
((^|, )(part1|part2|part3))+$
积极的比赛:
part1
part2, part1
part1, part2, part3
消极比赛:
part1, //with and without trailing spaces.
part3, part2,
otherpart1
'^(part1|part2|part1,part2)$'
这有用吗?
使用 如果在vim中:
:s/{\|}/"/g
将替换{和}上的" 所以{lol}变成了"lol"
或者你可以用这个:
^(?:part[12]|(part)1,\12)$