Regular expression is a sequence of characters that define a search pattern, mainly for use in pattern matching with strings, or string matching, ie “find and replace” -like operations.

Check regular expressions: regex101.com


SMS message: “01.01.2016 12:12 Card 4444, balance 12345.67 USD. Bonus 0 USD”


Simple template for balance:

  • Find the line that describes the value. For example, “balance 12345.67 USD“, or «Bonus 0 USD“.
  • Replace the value to be found by “(.*?)“. Should be “balance (.*?) USD“, or “Bonus (.*?) USD“.
  • If the text contains a symbol “.” or “*“, in front of each symbol so you need to put “\“, such as “Bonus (.*?) USD\.“

Search the balance only for 4444 card:

The template will be “4444.*balance (.*?) USD“, where “.*” – Any character 0 or more times. This pattern will look for a value only in SMS with text: “4444[any text]balance [value] USD”.


Search the balance for not 4444 card:

The template will be “^(?!.*4444). *balance (.*?) USD“, where “^(?!.*4444)” – check the text “4444”. The template will look for value only if there is no 4444 in sms text.


Special characters:

  • d or [0-9] – Digital symbol
  • D or [^0-9] – non-numeric characters
  • s or [\f \n\r\t\v] – whitespace
  • S or [^\f\n\r\t\v] – non-whitespace character
  • w or a [[:word:]] – alpha or numeric character or an underscore
  • W or [^[:word:]] – Any character except an alphabetic or numeric character or an underscore
  • ^ – Start of text
  • $ – End of Text

Use special characters, for search time:

To find the time in the SMS, using first example, template will be “01.01.2016 (.*?) Card“. But this is the wrong template, because the date can be any, not only 01.01.16. So use special characters:

  • “\s(.*?)Card” – searching for the text “[space][value]Card.”
  • “[\d]{4}\s(.*?)Card” – searching for the text “[two digits][space][value]Card”, where “[\d]” – digits, and “{4 }“- digits count.
  • “[\d]{2}\. [\D]{2}\.[\D]{4}\s(.*?)\sCard” – searching for the text “[two digits].[two digits].[four digits][space][value]Card”, where “[\d]{2}\.[\d]{2}\.[\d]{4} ” is full date format.