====== Notes About Regular Expressions ====== ===== Manual pages ===== (man 7 regex) man -k regex ===== Basic usage ===== 1. Matching 2. Substitute grep --color -E pattern sed 's/pattern/replacement/options' ===== Pattern examples ===== ==== Special characters ==== ''^ $ . + ? { [ () / | \'' ==== Anchors ==== ^, $ ==== Alternatives ==== /^hold|^fold/ /^(hold|fold)/ /^(h|f)old/ ==== Char classes ==== /[fhcb]old$/ /[a-zA-Z0-9]old$/ /[a-fA-F0-9x] hex$/ /[^a-z]/ is a negation /[a-z^]/ /[\^a-z]/ \d [0-9] (digit) \D [^0-9] \s [ \t\n\r\f] (white chars) \S [^ \t\n\r\f] \w [0-9a-zA-Z] (word chars) \W [^0-9a-zA-Z] . any character (!) sed 's/All right\./OK/' /ice\scream/ ==== Quantifiers ==== /color|colour/ /colo(r|ur)/ /colou?r/ /colou{0,1}r/ /Xa{3}/ = /Xaaa/ /(Xa){3}/ = /XaXaXa/ /xy*z/ /xy+z/ /^\d+$/ /ab?c[,.:]d/ abc.d ; ac,d ; ac:d /xy|yz+/ xy ; yz ; yzzzzzz /[\d\s]{2,3}/ 12, 123, ' ', ' ', '1 2', '\t\r2' ? {0,1} + {1,} * {0,} ==== Priority ==== () -- grouping ? + * { } -- quantifiers x \x $ ^ -- characters, anchors | -- alternatives ===== Example ===== www.google.com www.google-informatics.com www.seznam.cz www.linux.info ^www\.[a-z-]{1,}\.[a-z]{2,4}$ ^w{3}\.[[:lower:]-]+\.[:lower:]{2,4}$ ^www\.[a-z-]{1,}\.[a-z]{2,4}$ wget http://bio.felk.cvut.cz -O - | \ sed 's/\n\r//gmi' | \ sed 's/' | \ grep -o 'src=\"[^\"]*\"' echo 'a.b.c' | cut -d. -f2 echo 'a.b.c' | sed 's/\.//g sed 's/(..)(...)(..)/\2/' /^(\S+)\s.*\s\1$/ /"(.*)"/ "How are you," asked. "How are you," asked, "could you come?" /"([^"]+)"/ /"(.*?)"/ Lazy quantifiers: +?, *?, ??, {}? ===== BASH ===== if [[ "$var" =~ a[0-9] ]] ; then # do not quote the regexp pattern since bash 3.2 if [[ "$a" =~ ^[[:digit:]]+$ ]] ; then echo "${a} is a number" fi