Day 11: Matching Strings of Characters with Regular Expressions
#100DaysOfCode Challenge
Photo by Clément Hélardot on Unsplash
Today’s Progress:
Today I worked on the Regular Expressions section (61% done so far). The challenges were all focused on using regular expressions (no surprise there!) to match strings of characters. Here are my notes from today’s session:
Quotes & Key Ideas:
- You can use a flag to match different cases of regexes. For example,
/apple/i
will match all cases of the string 'apple' such as apple, Apple, aPPle, etc. - “You can also extract the actual matches you found with the
.match()
method." - “To search or extract a pattern more than once, you can use the global search flag:
g
" - “You can have multiple flags on your regex like
/search/gi
" - Wildcard Charcter: “The wildcard character
.
will match any one character. The wildcard is also calleddot
andperiod
. You can use the wildcard character just like any other character in the regex. For example, if you wanted to matchhug
,huh
,hut
, andhum
, you can use the regex/hu./
to match all four words." - Match Single Character with Multiple Possibilities: “For example, you want to match
bag
,big
, andbug
but notbog
. You can create the regex/b[aiu]g/
to do this. The[aiu]
is the character class that will only match the charactersa
,i
, oru
." - “Inside a character set, you can define a range of characters to match using a hyphen character:
-
. For example, to match lowercase lettersa
throughe
you would use[a-e]
." - “Using the hyphen (
-
) to match a range of characters is not limited to letters. It also works to match a range of numbers. For example,/[0-5]/
matches any number between0
and5
, including the**0**
and**5**
." - It’s also possible to match both letters and numbers at the same time. For example,
/[h-s2-6]/
will match the lettersh
throughs
and the numbers2
through6
. - Negated characters (characters you do NOT want to match): “To create a negated character set, you place a caret character (
^
) after the opening bracket and before the characters you do not want to match. For example,/[^aeiou]/gi
matches all characters that are not a vowel. " - You can use the + character to check to match a character (or group of characters) that appears one or more times in a row. “For example,
/a+/g
would find one match in abc and return["a"]
. Because of the+
, it would also find a single match in aabc and return["aa"]
." - While the
+
sign is used to check if a character occurs one or more times, the*
sign can be used to check if a character occurs zero or more times.
Greedy vs. Lazy Matching:
- A greedy match will match the longest possible part of the string
- A lazy match will match shortest possible part that satisfies the regex expression. However, you can use the
?
character to change it to lazy matching. - “Note: Parsing HTML with regular expressions should be avoided, but pattern matching an HTML string with regular expressions is completely fine.”
- You can also use the
^
carrot character to search the beginning of strings, but to search the end of a string you would use the$
dollar symbol at the end (e.g.,/story$/
will look for the stringstory
at the end of a string likeThis is the end of the story
and return atrue
value)
shorthand character classes:
- alphanumeric: In JavaScript the shortcut
\w
is used in place of[A-Za-z0-9_]
to search for alphanumeric characters. - non-alphanumeric: To search for the opposite of alphanumeric characters (i.e,.
!
,%
, etc.) we can use\W
which is equivalent to[^A-Za-z0-9]
. - digits 0–9: The shortcut to look for digit characters is
\d
, with a lowercased
. This is equal to the character class[0-9]
Photo by Kenny Eliason on Unsplash
Thoughts:
Overall I’m feeling pretty confident about today’s study session. The regular expressions haven’t been too difficult for me, though I have seen them before in my study of Python — but that was a while ago so I’m appreciating the review in these challenges.
I didn’t listen to music during today’s session — my hour of coding was broken up in to small segments at work and at home. I squeezed in the time wherever I could which worked pretty well. There’s something relaxing about working on coding challenges, it’s a nice break from the ‘day job’. Looking forward to learning more.
Link to work:
For my progress visit the timeline on my freeCodeCamp Profile.
The full log of my #100DaysOfCode journey can be viewed on GitHub.