Regular expressions (Bash): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 11: Regel 11:
  
 
== Match a single digit ==
 
== Match a single digit ==
 +
 +
<code>[]</code> denotes single character-comparison:
  
 
<pre>
 
<pre>

Versie van 29 sep 2022 13:03

To use regular expressions in Bash comparisons, use operator =~, like

if [[ "$switches" =~ [f] ]]; then
   echo "f - Create folder structure"
   mappenstructuur=true
fi

I have the impression that regular expressions (regex) in Bash may not be the same as in MySQL, hence some more details in this article.

Match a single digit

[] denotes single character-comparison:

[[ $i =~ [2] ]] && echo "i contains '2'"
[[ $i =~ [12] ]] && echo "i contains '1' and/or '2'"

Match all numbers or letters

[[ $i =~ [0-9] ]] && echo "i contains a number"
i="blub"; [[ $i =~ [A-Z] ]] && echo "i contains at least one uppercase letter"   # False
i="BLUB"; [[ $i =~ [A-Z] ]] && echo "i contains at least one uppercase letter"   # True
i="blub"; [[ $i =~ [a-z] ]] && echo "i contains at least one lowercase letter"   # True
i="blub"; [[ $i =~ [a-zA-Z] ]] && echo "i contains at least one letter"   # True

Sequences

  • ^: Beginning of the string
  • $: End of the string
i="BLuB"; [[ $i =~ ^[A-Z]+$ ]] && echo "i contains only capital letters"   # False
i="BLUB"; [[ $i =~ ^[A-Z]+$ ]] && echo "i contains only capital letters"   # True

See also

Sources