8.3. Answers (For Regular Expressions)¶
8.3.1. Scenario: dd/mm/yyyy
↔mm/dd/yyyy
¶
If old text is 30/01/2007
it will be replaced with 01/30/2007
In visual studio, find the pattern: ([0-9]{2})/([0-9]{2})/([0-9]{4})
. Ensure you click on .*
to enable search with regular expressions.
Then, replace with $2/$1/$3
In other some edits, the replace pattern might be required to be \2/\1/\3
.
Let’s understand the regular expression.
For the search section:
[0-9]
- Match number from 0-9[0-9]{2}
- Match number from 0-9, and same thing repeated twice.([0-9]{2})
- Using the round brackets, we make this as a GroupIn the above example, we have 3 groups.
.*
is required to select the search to be regular expression. Else it would be plain text search.
For the replace section:
Here, array starts with 1. :-)
Since we are swapping dd/mm/yyyy into mm/dd/yyyy, i.e. 1-2-3 into 2-1-3, the replace pattern is
$2/$1/$3
$
for replace means selector for the matched group.Note: In case of search section,
$
denotes end of line.
8.3.2. Scenario: Hexadecimal Words¶
# download a list of common words from internet to a local file.
wget https://www.mit.edu/\~ecprice/wordlist.10000 -O dict_list.txt
# E-Grep. Find using regular expressions
egrep -i "^[a-f0-9]+$" dict_list.txt
Let’s understand the regular expression.
^
- Match from the beginning of the line[a-f0-9]
- From a-f and 0-9, inclusive.[a-f0-9]+
- From a-f and 0-9, inclusive. 1 or more such matches.$
- Match till the end of the line
8.3.3. Scenario: Convert a sequence of numbers to hex for C Array¶
Assuming values are 223344556677
, it can be replaced to 0x22, 0x33, 0x44, 0x55, 0x66, 0x77
Set the regular expression search pattern to ([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])
Set the replace pattern to 0x$1, 0x$2,
.
If the file has other numbers, do not do find and replace all. Instead do find and replace in selection.
8.3.4. More Learning¶
https://regex101.com/ is an excellent site to learn more about it.