# BASH_REMATCH:ista puhutaan paljon ja selvitetään juurta jaksain kuinka se toimii. Ymmärrettäviä esimerkkejä ei juurikaan esitetä; siis sellaista jossa tulostetaan BASH_REMATCH, BASH_REMATCH[1], BASH_REMATCH[2], BASH_REMATCH[3] ... jotta asiasta tulisi kunnollinen rautalankamalli jota ei voi käsittää väärin. 

#Yhden esimerkin löysin ... no jaa, tein ziljoona korjaus-yritystä ennenkuin sain toimimattomasta toimivan. Ja tämänjälkeen alkoi löytyä muitakin mutta siis vasta kun tiesi mitä pitää etsiä. 

#!/bin/bash
sana="höpinää 2013:06:23 lisää höpinää"; regexp="([0-9]+):([0-9]+):([0-9]+)"
[[ "$sana" =~ $regexp ]] && echo "sanassa seuraava palanen täytti koko regex:än-> $BASH_REMATCH; vuosi ${BASH_REMATCH[1]} tunti ${BASH_REMATCH[2]} minuutti ${BASH_REMATCH[3]}"
# siis mikäli sanassa mikään ei täytä koko regexää niin ei tulosteta mitään - elikä 2013:06 ei riitä. 

read

#toinen esimerkki:
  [[ "012 a34567b89cdefgh" =~ ([a-z])[0-9]*([a-z])[0-9]*([a-z]) ]] && {
      echo "- vain selitystä: REMATCH tehdän kohdassa:[[ "012 a34567b89cdefgh" =~ ([a-z])[0-9]*([a-z])[0-9]*([a-z]) ]]." 
      echo "  Regex muodostuu useasta regex:stä. Tässä esimerkissä on kolme regex:ää ympäröity kaarisuluilla." 
      echo "BASH_REMATCH on koko regex alue= "$BASH_REMATCH
      echo "BASH_REMATCH[1] (elikä regex:än ensimmäisessä ()-osassa olevan regex:n hyväksymä arvo)= ${BASH_REMATCH[1]}"
      echo "BASH_REMATCH[2] (elikä regex:än toisessa      ()-osassa olevan regex:n hyväksymä arvo)= ${BASH_REMATCH[2]}"
      echo "BASH_REMATCH[3] (elikä regex:än kolmannessa   ()-osassa olevan regex:n hyväksymä arvo)= ${BASH_REMATCH[3]}" ;}

read
#kolmas esimerkki, kenttien kääntäminen:
[[ "teksti_112233.txt" =~ (.*[[:punct:]])([0-9][0-9])([0-9][0-9])([0-9][0-9])(.*) ]] && echo ${BASH_REMATCH[1]}${BASH_REMATCH[4]}${BASH_REMATCH[3]}${BASH_REMATCH[2]}${BASH_REMATCH[5]}  # tulostaa: teksti_332211.txt


