How is the AND/OR operator represented as in Regular Expressions?

RegexOperators

Regex Problem Overview


I'm currently programming a vocabulary algorithm that checks if a user has typed in the word correctly. I have the following situation: The correct solution for the word would be "part1, part2". The user should be able to enter either "part1" (answer 1), "part2" (answer 2) or "part1, part2" (answer 3). I now try to match the string given by the user with the following, automatically created, regex expression:

^(part1|part2)$

This only returns answer 1 and 2 as correct while answer 3 would be wrong. I'm now wondering whether there's an operator similar to | that says and/or instead of either...or.

May anyone help me solve this problem?

Regex Solutions


Solution 1 - Regex

I'm going to assume you want to build a the regex dynamically to contain other words than part1 and part2, and that you want order not to matter. If so you can use something like this:

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

Positive matches:

part1
part2, part1
part1, part2, part3

Negative matches:

part1,           //with and without trailing spaces.
part3, part2, 
otherpart1

Solution 2 - Regex

'^(part1|part2|part1,part2)$'

does it work?

Solution 3 - Regex

Not an expert in regex, but you can do ^((part1|part2)|(part1, part2))$. In words: "part 1 or part2 or both"

Solution 4 - Regex

Does this work without alternation?

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

or why not this?

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

The first works for all conditions the second for all but part2(using GNU sed 4.1.5)

Solution 5 - Regex

Or you can use this:

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

Solution 6 - Regex

use
if in vim:

:s/{\|}/"/g

will replace { and } on " so {lol} becomes "lol"

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJonathanView Question on Stackoverflow
Solution 1 - RegexGaute LøkenView Answer on Stackoverflow
Solution 2 - RegexKentView Answer on Stackoverflow
Solution 3 - RegexBlackBearView Answer on Stackoverflow
Solution 4 - RegexpotongView Answer on Stackoverflow
Solution 5 - RegexFailedDevView Answer on Stackoverflow
Solution 6 - RegexolegatorView Answer on Stackoverflow