REGEX - It's a Piece of Cake!
Hello everyone!!๐
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.๐ค
CONTENTS
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.๐คฉ
Cheatsheets
Matching Symbols
Note: [^regex]
and ^regex
are totally different.
Meta Characters
Quantifiers
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 removeString s="I love Hashnode. It is a wonderful platform." ; s=s.replaceAll("[^\\w]", " ");
.
after each sentence. So, we used [^\\w] inreplaceAll()
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 aString[] str=s.split("[\\s]+");
+
.
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
trim()
?
- 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 trim()
.
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:
Cheat Sheet
A vast collection of solutions
Generate RegExes from input data
Online Editors
- Online regex tester and debugger
- Regexper (My personal favorite <3)
- RegExr: Learn, Nuild. & Test Regex
Visualize RegExes
Wow!! I don't know some of these. Thanks for sharing.๐ Denny Trebbin Saul Blanco Tejero
Spatial Inquiries
Fantastic resource! I am teaching a little about this right now and this is the perfect resource.
Software Engineer
Nice Article !
Reminds me of a funny quote
"One day my daughter came in, looked over my shoulder at some Perl 4 code, and said, "What is that, swearing?"
-Larry Wall
Learn to think like a software engineer | Ex SDE @amazon
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!
Why do you use a character set in this example?
String[] str=s.split("[\\s]+");
I mean, it is unnecessary in this case...
Anyway, I love to see people sharing the regex power :)
Yup Saul, I agree. I added so people who don't know and who are new to regex can also easily understand.๐ Thanks for feedback๐ค
Trying to learn something new everyday
๐
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!
Loved to see people coming and sharing helpful resources๐๐คฉ. Thanks, for sharing.
Comments (13)