REGEX - It's a Piece of Cake!
Are you confused with the title😅? Do you also stay away from regular expressions? Do you use google while solving regex problems? Not after reading this article!😋
C'mon, let's learn it together.🤗
Why Regular Expressions?
Regex(Regular Expressions) is used to define various types of string patterns which can be used for manipulating, searching, or editing a string. It can be used in all types of text search and text replace operations. Simply, a regular expression is a sequence of characters that helps us to match or find strings.
As we are now aware of regex, let's see how to write it.🤩
^regex are totally different.
How to write regular expressions?
We should write a regular expression pattern in such a way that it satisfies the required output. Many of them feel regex is hard because of this. So, let's solve some examples to understand this more clearly.
disclaimer: I am using java methods in solutions below. If you are willing to use other languages just check with the regular expression, which is our main goal.😉
- Question-1: Given string is "I love Hashnode. It is a wonderful platform." Write a matching regular expression that split the string into tokens.
As we take only words as tokens we have to remove
String s="I love Hashnode. It is a wonderful platform." ; s=s.replaceAll("[^\\w]", " ");
.after each sentence. So, we used [^\\w] in
replaceAll()to replace all characters except [a-zA-Z_0-9] with a white-space. Now, to split them into tokens we do👇
Here, we are scanning for a token until a white-space occurs. We identified white spaces using [\\s]. Since there can be a sequence of more than one white spaces we also used a
Output: [I, love, Hashnode, It, is, a, wonderful, platform]
- Question-2: Given a string "I l1ove Hashn7ode. It is 3a wond5erful pla4tform.". Our aim is to print only numbers from this string.
Our aim is to get numbers right? So, I am replacing everything with a white-space expect 0-9 using [^0-9].
String s="I l1ove Hashn7ode. It is 3a wond5erful pla4tform."; s=s.replaceAll("[^0-9]", " ");
s=s.trim(); String str=s.split("[\\s]+");
- Why we used
- Why we used
trim() is used to remove trailing and leading spaces. After replacing alphabets with a white-space, we get trailing spaces because of
I in " I love Hashnode". Since trailing spaces cannot be identified with [\\s]+ we used
Output: [1, 7, 3, 5, 4]
That's all people😍. Now, we can write any regex patterns in any language by using these cheat sheets.
Say bye-bye to google!😁
Articles you may like
Node.js developer. Experimenting with bleeding-edge tech. Irregularly DJ. Hobby drone pilot. Amateur photographer.
A good run down and easy to read :-)
I add some links I find useful:
A vast collection of solutions
Generate RegExes from input data
- Online regex tester and debugger
- Regexper (My personal favorite <3)
- RegExr: Learn, Nuild. & Test Regex
For more advanced use cases, the Java classes I have mostly worked with are in https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html.
Nice and straightforward intro to regex, Sai Laasya Vabilisetty!
Other useful tools: regex101.com After many years of using tools (I love regexes!), I settled down on this one (rather than others) for a few reasons:
- easy support of whitespace (when you have to deal with more than just spaces)
- support various languages. Not all regexes are exactly the same
- code generation. Ease the process to escape things
- built-in tests support!
regexplained.co.uk which builds a railroad diagram of the regex pattern you give it. Makes it easy to review/read/understand a new pattern.... as they grow they can become hard to read easily, this helps a lot!
Why do you use a character set in this example?
I mean, it is unnecessary in this case...
Anyway, I love to see people sharing the regex power :)