What does the asterisk (*) quantifier mean in bash regular expressions?
The asterisk (*) means "zero or more" of the preceding character or group. It matches if the pattern appears any number of times, including not at all.
Click to reveal answer
beginner
Explain the plus (+) quantifier in bash regex.
The plus (+) means "one or more" of the preceding character or group. It requires at least one occurrence to match.
Click to reveal answer
beginner
What does the question mark (?) quantifier do in bash regex?
The question mark (?) means "zero or one" of the preceding character or group. It matches if the pattern appears once or not at all.
Click to reveal answer
intermediate
In bash scripting, how would you check if a variable contains one or more digits using regex?
You can use [[ $var =~ [0-9]+ ]] which means the variable contains one or more digits.
Click to reveal answer
beginner
True or False: The regex pattern 'a*' matches the string 'bbb' in bash.
True. 'a*' matches zero or more 'a's, so it matches even if there are no 'a's, like in 'bbb'.
Click to reveal answer
What does the regex quantifier '+' mean in bash?
AExactly one occurrence
BZero or more occurrences
CZero or one occurrence
DOne or more occurrences
✗ Incorrect
The '+' quantifier matches one or more occurrences of the preceding element.
Which quantifier matches zero or more times in bash regex?
A?
B*
C+
D{1,}
✗ Incorrect
The '*' quantifier matches zero or more occurrences.
What does the '?' quantifier do in bash regex?
AMatches one or more times
BMatches zero or more times
CMatches zero or one time
DMatches exactly two times
✗ Incorrect
The '?' quantifier matches zero or one occurrence of the preceding element.
Which regex pattern matches a string with zero or more 'a's?
Aa*
Ba?
Ca+
Da{1,}
✗ Incorrect
"a*" matches zero or more 'a's.
In bash, which regex would match a string with at least one digit?
A[0-9]+
B[0-9]*
C[0-9]?
D[0-9]{0}
✗ Incorrect
"[0-9]+" matches one or more digits.
Describe the difference between the '*', '+', and '?' quantifiers in bash regex.
Think about how many times the pattern can appear.
You got /3 concepts.
How would you use a quantifier in bash to check if a variable contains an optional character?
Optional means it can be there or not.
You got /3 concepts.
Practice
(1/5)
1. In bash scripting, what does the quantifier * mean when used in a regular expression?
easy
A. Match zero or more occurrences of the preceding element
B. Match exactly one occurrence of the preceding element
C. Match one or more occurrences of the preceding element
D. Match zero or one occurrence of the preceding element
Solution
Step 1: Understand the meaning of * in regex
The * quantifier matches zero or more occurrences of the character or group before it.
Step 2: Compare with other quantifiers
Unlike + which requires at least one match, * allows zero matches too.
Final Answer:
Match zero or more occurrences of the preceding element -> Option A
Quick Check:
* means zero or more matches [OK]
Hint: Remember * means zero or more times, including none [OK]
Common Mistakes:
Confusing * with + which requires at least one match
Thinking * matches exactly one occurrence
Mixing * with ? which means zero or one
2. Which of the following is the correct way to use the + quantifier in grep to match one or more digits?
easy
A. grep '[0-9]+' file.txt
B. grep -P '[0-9]*' file.txt
C. grep '[0-9]*' file.txt
D. grep -E '[0-9]+' file.txt
Solution
Step 1: Recognize that + needs extended regex
The + quantifier is not supported by default in basic grep; it requires -E or -P option.
Step 2: Identify correct grep syntax
Using grep -E '[0-9]+' enables extended regex and matches one or more digits.
Final Answer:
grep -E '[0-9]+' file.txt -> Option D
Quick Check:
Use -E or -P for + quantifier [OK]
Hint: Use grep -E or -P to enable + quantifier [OK]
Common Mistakes:
Using + without -E or -P causes literal + match
Confusing * with + quantifier
Using -P without knowing if Perl regex is supported
3. What will be the output of the following command if file.txt contains the lines:
apple
apples
ap
ape
Command:
grep -E 'ap?le' file.txt
medium
A. apple
B. (no output)
C. apple
aple
D. apple
aple
ape
Solution
Step 1: Understand the regex ap?le
The p? means zero or one 'p' character. So it matches 'ale' or 'aple'.
Step 2: Check which lines match
Lines: 'apple' (has two p's, so no), 'apples' (extra chars, no), 'ap' (too short), 'ape' (does not match 'ap?le' because 'l' is missing). Actually 'apple' has two 'p's, so 'ap?le' matches 'ale' or 'aple' but 'apple' has 'pp', so no match. 'ape' does not match 'ap?le' because 'l' is missing. So only 'apple' matches partially but not fully.
Step 3: Re-examine lines carefully
Actually, 'apple' is 'a p p l e'. The regex 'ap?le' means 'a' followed by zero or one 'p', then 'l', then 'e'. So 'apple' has two 'p's, so it does not match. 'ape' does not match 'ap?le' because 'l' is missing. So no output.
Final Answer:
apple -> Option A
Quick Check:
Regex matches zero or one p, so 'apple' no match [OK]
Hint: p? means zero or one p, so two p's won't match [OK]
Common Mistakes:
Assuming 'apple' matches when it has two p's
Ignoring that ? allows zero or one occurrence only
Confusing 'ap?le' with 'ap*le'
4. You wrote this grep command to find lines with one or more digits:
grep '[0-9]+' file.txt
But it returns no matches even though the file has digits. What is the likely problem?
medium
A. The regex should use * instead of +
B. The + quantifier needs -E or -P option to work
C. Digits are not matched by [0-9]
D. The file.txt is empty
Solution
Step 1: Understand grep default regex
By default, grep uses basic regex where + is treated as a literal plus sign, not a quantifier.
Step 2: Identify correct usage for + quantifier
To use + as 'one or more', grep needs -E (extended regex) or -P (Perl regex) option.
Final Answer:
The + quantifier needs -E or -P option to work -> Option B
Quick Check:
Use -E or -P for + quantifier [OK]
Hint: Add -E or -P to grep when using + quantifier [OK]
Common Mistakes:
Using + without enabling extended regex
Thinking * and + are interchangeable always
Assuming [0-9] does not match digits
5. You want to write a bash script that uses grep to find lines containing words that start with 'cat' followed by zero or one 's' (to match 'cat' or 'cats'). Which grep command correctly uses quantifiers to do this?
hard
A. grep -E '\bcat?s\b' file.txt
B. grep '\bcat?s\b' file.txt
C. grep -E '\bcats?\b' file.txt
D. grep '\bcats?\b' file.txt
Solution
Step 1: Understand the pattern needed
We want to match 'cat' or 'cats'. The 's' is optional, so use s? quantifier.
Step 2: Use word boundaries and extended regex
Use \b for word boundaries and -E to enable ? quantifier.
Step 3: Check options
grep -E '\bcats?\b' file.txt uses grep -E '\bcats?\b' which matches 'cat' or 'cats' correctly. Others either lack -E or misplace the quantifier.
Final Answer:
grep -E '\bcats?\b' file.txt -> Option C
Quick Check:
Use -E and s? to match zero or one s [OK]
Hint: Use -E and s? to match optional s after cat [OK]
Common Mistakes:
Forgetting -E option for ? quantifier
Placing ? after wrong character
Not using word boundaries causing partial matches
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.