Bird
Raised Fist0
MATLABdata~5 mins

Regular expressions in MATLAB

Choose your learning style10 modes available
Introduction

Regular expressions help you find patterns in text. They make searching and changing text easier and faster.

You want to check if a phone number is in the right format.
You need to find all email addresses in a document.
You want to replace all dates written as 'dd-mm-yyyy' with 'yyyy/mm/dd'.
You want to split a sentence into words based on spaces and punctuation.
Syntax
MATLAB
matches = regexp(str, expression)
matches = regexp(str, expression, 'match')
startIndex = regexp(str, expression, 'start')
newStr = regexprep(str, expression, replaceStr)

regexp finds patterns in text.

regexprep replaces parts of text matching a pattern.

Examples
This finds the phone number pattern in the string.
MATLAB
str = 'My phone is 123-456-7890.';
matches = regexp(str, '\d{3}-\d{3}-\d{4}', 'match');
This finds all email addresses in the string.
MATLAB
str = 'Emails: a@example.com, b@test.org';
matches = regexp(str, '[\w\.]+@[\w\.]+', 'match');
This changes date format from dd-mm-yyyy to yyyy/mm/dd.
MATLAB
str = 'Date: 31-12-2023';
newStr = regexprep(str, '(\d{2})-(\d{2})-(\d{4})', '$3/$2/$1');
Sample Program

This program finds and prints all email addresses in the given string.

MATLAB
str = 'Contact: john.doe@example.com or jane_smith@test.net';
pattern = '[\w\.]+@[\w\.]+\.[a-z]{2,4}';
matches = regexp(str, pattern, 'match');
for i = 1:length(matches)
    fprintf('Found email: %s\n', matches{i});
end
OutputSuccess
Important Notes

Use double backslashes (\\) in MATLAB strings to write a single backslash in the pattern.

Regular expressions are case sensitive by default.

Use 'match' option with regexp to get the actual matching text.

Summary

Regular expressions help find and change text patterns easily.

Use regexp to search and regexprep to replace text.

Patterns use special symbols like \d for digits and + for one or more.

Practice

(1/5)
1. What does the MATLAB function regexp do?
easy
A. Searches for text patterns in strings
B. Replaces text in strings
C. Sorts arrays numerically
D. Calculates the length of a string

Solution

  1. Step 1: Understand the purpose of regexp

    The regexp function in MATLAB is used to find matches of a pattern within text.
  2. Step 2: Compare with other functions

    regexprep replaces text, but regexp only searches for patterns.
  3. Final Answer:

    Searches for text patterns in strings -> Option A
  4. Quick Check:

    regexp = search function [OK]
Hint: Remember: regexp = search, regexprep = replace [OK]
Common Mistakes:
  • Confusing regexp with regexprep
  • Thinking regexp modifies strings
  • Mixing regexp with numeric functions
2. Which of the following is the correct syntax to find all digits in the string 'abc123' using regexp?
easy
A. regexp('abc123', '\\d+')
B. regexp('abc123', '\\w+')
C. regexp('abc123', '\\s+')
D. regexp('abc123', '\\D+')

Solution

  1. Step 1: Identify the pattern for digits

    In regular expressions, \d matches digits, and + means one or more.
  2. Step 2: Check the options

    regexp('abc123', '\\d+') uses \\d+ which correctly matches one or more digits. Others match word characters, spaces, or non-digits.
  3. Final Answer:

    regexp('abc123', '\\d+') -> Option A
  4. Quick Check:

    Digits = \d+ pattern [OK]
Hint: Use \\d+ to match one or more digits [OK]
Common Mistakes:
  • Using \w+ which matches letters and digits
  • Using \s+ which matches spaces
  • Using \D+ which matches non-digits
3. What is the output of the following MATLAB code?
str = 'cat bat rat';
matches = regexp(str, '\\b\w{3}\b', 'match');
disp(matches);
medium
A. ['cat', 'bat']
B. ['catbat', 'rat']
C. [] (empty cell array)
D. ['cat', 'bat', 'rat']

Solution

  1. Step 1: Understand the pattern '\\b\\w{3}\\b'

    The pattern matches word boundaries \\b around exactly 3 word characters \\w{3}.
  2. Step 2: Apply pattern to string

    The string has three 3-letter words: 'cat', 'bat', and 'rat'. All match the pattern.
  3. Final Answer:

    ['cat', 'bat', 'rat'] -> Option D
  4. Quick Check:

    Three 3-letter words matched [OK]
Hint: \b\w{3}\b matches exactly 3-letter words [OK]
Common Mistakes:
  • Ignoring word boundaries and matching partial words
  • Expecting concatenated matches
  • Confusing \w with digits only
4. The following MATLAB code is intended to replace all digits in str with '#' but does not work as expected:
str = 'Room 101';
newStr = regexprep(str, '\d', '#');
disp(newStr);
What is the error and how to fix it?
medium
A. Pattern should be '\\d+' to replace all digits at once
B. No error; code works correctly
C. Pattern should be '\\D' to match digits
D. Use regexp instead of regexprep

Solution

  1. Step 1: Analyze the regexprep usage

    The pattern '\\d' matches any single digit, and regexprep replaces all occurrences by default.
  2. Step 2: Check the output

    Replacing each digit with '#' in 'Room 101' results in 'Room ###', which is expected.
  3. Final Answer:

    No error; code works correctly -> Option B
  4. Quick Check:

    regexprep replaces all matches by default [OK]
Hint: regexprep replaces all matches even with single-digit pattern [OK]
Common Mistakes:
  • Thinking \d replaces only one digit total
  • Using \D which matches non-digits
  • Confusing regexp with regexprep
5. You have a cell array of strings: {'abc123', 'def456', 'ghi789'}. How do you extract only the numeric parts from each string using MATLAB regular expressions?
hard
A. Use regexp(cellArray, '\\d+', 'match')
B. Use regexp(cellArray, '\\w+', 'match')
C. Use regexprep(cellArray, '\\D', '')
D. Use regexprep(cellArray, '\\d+', '')

Solution

  1. Step 1: Understand the goal

    We want to keep only digits, removing all non-digit characters.
  2. Step 2: Choose the correct function and pattern

    regexprep replaces patterns. Using \\D matches non-digits, so replacing them with empty string keeps only digits.
  3. Final Answer:

    Use regexprep(cellArray, '\\D', '') -> Option C
  4. Quick Check:

    Remove non-digits with \D pattern [OK]
Hint: Replace non-digits (\D) with empty string to keep digits [OK]
Common Mistakes:
  • Using regexp with 'match' returns cell arrays, not strings
  • Replacing digits instead of non-digits
  • Using \w+ which matches letters and digits
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard