Latest news about Bitcoin and all cryptocurrencies. Your daily crypto news habit.
When you start learning a new programming language, maybe you had been learning follow those steps: variable, assignment, string, operators… One major theme you need to focus is string operations. Fox example: get first name from full name, find and censor all mobile numbers in message,…
Along the operation we usually need to process some common procedure. One repeated procedure is finding a substring and implement some operations over the substring. Maybe you had done like something like this in the very beginning of your learning path.
int checkMatchStubPattern(char* string) {for(int i = 0; i < strlen(string); i++) { // logic for checking string pattern ... }return ...}
Not a wrong way, but a time consuming. You must change the checking logic in every case. More code, more bug and of course hard for maintainance. Luckily, Regular Expression - Regexcome as a hero to solve those kind of problems: find, input validation… As a confirmation for the usage of Regex, every programming language supports Regex for string operations.
Regular expression is a sequence of characters that define a search pattern. This pattern is then used by string searching algorithms for “find” or “find and replace” operations on strings, or for input validation. (Source: Wikipedia)
Regex is an efficient tool to solve that problem; but it comes at a price. It is really hard to read and understand (but not hard to learn). First try to read the example below.
Regex for checking whether a string is a valid url or not
Because of complicated syntax, it is very hard to read and understand Regex. Furthermore, you seems not to work with Regex too often. ROI (return-on-investment) is too low; almost common Regex you need to use can be found on the internet (password, url, IP address,…). Are you willing to spend some weeks for learning something that you only use 4 or 5 times a year? Or just skimming over some sites for the result in around 5 minutes? That way of thinking make developers tend to google some Regex and modify to fit into their needs. Sometime it can cost some hours to a whole day for the repetition process of searching - modifying…
Regex solve the string operation problem; but how about the problem of Regex? Fortunately, it can be solved with Verbal Expressions. Try to look at this example.
VerEx().startOfLine().then('http').maybe('s').then('://').anythingBut(' ').endOfLine();
I hope that you will not be frustrated after reading this example. The Verbal Expressions above is defined following this rule:
- The URL must start with either “http” or “https”.
- The URL must then have “://“.
- The URL can have anything following “://“, as long as is not a space.
The generated Regex from the above code is: /^(?:http)(?:s)?(?:\:\/\/)(?:[^ ]*)$/. A bit diffenret but the functional is the same. You can find the implementation of Verbal Expressionsin several languages here.
VerbalExpressions solve the biggest probelem of Regex. It is readable and easy-to-understand regular expressions. In my opinion, the transition from Regex to VerbalExpressions is great as the movement from SQL to ORM.
Anyways, VerbalExpressions still have some drawbacks. You need to install a new library to your project, sometimes it is quite painful (e.g. you client, manager… don’t think it’s neccessary). In that case, you can go to VerbalRegex; write the code and it will generate the Regex for you.
Online tool for generating Regex
Try this tool by accessing verbalregex.com.
Conclusion
VerbalExpressions is not a replacement of Regex; but an easy way to write readable Regex. It can ease the pain of Regex, and actually make writing expressions fun again. But keep in mind that Regex still seems to be the best choice in some complicated cases.
VerbalExpressions — RegularExpression made easy was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
Disclaimer
The views and opinions expressed in this article are solely those of the authors and do not reflect the views of Bitcoin Insider. Every investment and trading move involves risk - this is especially true for cryptocurrencies given their volatility. We strongly advise our readers to conduct their own research when making a decision.