AutoHotkey webinar on Regular Expressions- Learn some great RegEx Tips!

AutoHotkey Merchandise-White Stress ballThis AHK Webinar focused on Regular Expressions.

AutoHotkey Webinar Videos

AutoHotkey webinar

Video of Hour One

Video of Hour two

Content from AutoHotkey Webinar

What are Regular Expressions?

  • “Symbols that describe a text pattern”
  • Pattern matching- Chances are extremely high that you’re familiar with this.
    • Using * or ? when looking for a file in Windows Explorer
    • Validate format ( email, phone number, zip code, two-letter state abbreviation)
    • Search & replace text in files
    • Count # of times pattern exists
    • Find duplicate words

When to use RegEx vs. other functions like StrReplace(), InStr()

  • When Haystack is smaller- probably doesn’t matter
  • StrReplace() and InStr() are faster than RegEx but simpler

General rule-of-thumb:  Use RegEx when your pattern is more complex

RegExMatch vs. RegEx Replace

There is definitely overlap between the two tools however here is a high-level view of their “niche” areas & important their differences:

RegExMatch()

  • Tool for finding, saving & extracting specific matches
  • Once your match is found, RegExMatch has done it’s job and stops processing. To continue you need to restart beginning where your last match was found
  • Does NOT affect original data
  • Returns found position
  • O) Match pattern can be returned as an object/pseudo array for easy access

RegExReplace()

  • Modification tool allows you to change (re-order/structure, swap out) your data
  • Does not stop after finding first match. Unless otherwise stipulated it proceeds through the entire haystack
  • Returns Newstring:= (altered) string

Common / Helpful RegEx Options

  • m) Multiline (treats each line as separate text)
  • U) Ungreedy (stops at first match)
  • x) Ignore whitespace (great for multiline RegEx)
  • C) Auto-callout mode (help show where you are in your Expression)
  • O) (in RegExMatch) returns match in object

Quantifiers

  • * 0 or more times
  • ? 0 or 1 times
  • + 1 or more times
  • {N} exactly N times
  • {N,} N or more times
  • {N,M} N through M times

Characters Needing Escape

  • \ . * ? + [ { | ( ) ^ $”

Ranges

  • [1-5], [a-e]

Special Characters

  • ^ Start of Line
  • $ End of Line
  • . Any character

Escapes

  • \d  Digit              \D   Non-digit
  • \s Whitespace    \S    Non-whitespace
  • \w “Word“          \W Non-“Word”
  • \n  New Line       \t  Tab
  • \r  Line Return   \b  Boundary
  • \QLiteral\E
  • \x  where x is Hex  \x22=“

Regular Expression Resources

AutoHotkey Help

Tools Built in AutoHotkey

Websites to test dynamic code

Additional Resources

Check out more AutoHotkey webinars

Sign-up for future ones here

RegEx 111) Ignore Whitespace in AutoHotkey Regular Expression

Ignore Whitespace in AutoHotkey Regular ExpressionAutoHotkey Merchandise-White Stress ballLong Regular Expressions can be very difficult to read and revise when you come back to it later.  Using the X) option allows you to Ignore Whitespace in AutoHotkey Regular Expression and insert comments as well as spread out your RegEx over multiple lines.

Below is the example code I use to ignore the whitespace in AutoHotkey RegEx which is demonstrated in the video below.  It is a great way to make your code easier to read & maintain.  It may take a few months until you revisit your RegEx but, when you do, you’ll thank me for it!

#SingleInstance, Force
#NoEnv
Browser_Forward::Reload
Browser_Back::
response=
(
{"items":[{"id":3866967518001,"name":"TechDays","referenceId":null,"playsTotal":null},{"id":3869639371001,"name":"Sensitivity and Selectivity in Low Power RF","referenceId":"0_4f50771k","playsTotal":null},{"id":3869653908001,"name":"Low Power RF Developer - Wireless Glue Networks Inc.","referenceId":"0_wraewmky","playsTotal":null},{"id":3869704547001,"name":"The Babelfish may Soon be Science Fact","referenceId":"0_m73cr9uf","playsTotal":null},{"id":3873942948001,"name":"Xilinx FPGA 向け電源設計ツール","referenceId":"0_w7mv8jwm","playsTotal":null},{"id":3880705798001,"name":"FORAPPROVAL_EELive_Demo20_DLP_FORAPPROVAL","referenceId":null,"playsTotal":2},{"id":3880723945001,"name":"EELive_Demo22_Low_Power_Vision","referenceId":null,"playsTotal":1},{"id":3881779779001,"name":"UCC28711 10mW 소모 전력 데모","referenceId":"0_8ejutfdv","playsTotal":null},{"id":3870946516001,"name":"LM5113 Enhancement Mode GaN FET Half-Bridge Driver Demo","referenceId":"0_wuof80ce","playsTotal":301},{"id":3907785832001,"name":"C6A8168 C6-Integra Processor Overview (Standard - Small)","referenceId":null,"playsTotal":null}],"page_number":0,"page_size":10,"total_count":4574}
)

RegExMatch(response, "xO)^" ;x=Ignore Whitespace in AutoHotkey Regular Expression, O store in object
	. "(?:\{""items"":\[)" ;remove early part not wanted-not capture using ?:
	. "(?P<json_Videos>.*)" ; grabbing json of videos
	. "(?:\],""page_number"":(?P<Page_Numb>\d{1,5}),)"  ;Page number looping through
	. "(?:""page_size"":(?P<Vids_Per_Page>\d{1,3}),)"  ;videos per page
	. "(?:""total_count"":(?P<Total_Numb_Vids>\d{1,5})" ;Total count of videos
	. "\})", Vids) ;closing out regexmatch

MsgBox,,total numb vids, % vids.Total_Numb_Vids
MsgBox,,json for videos, % vids.json_Videos
MsgBox,,vids per page, % vids.Vids_Per_Page
MsgBox,,Page_Numb, % vids.Page_Numb

Ignore Whitespace in AutoHotkey Regular Expression

RegEx 110- Example using AutoHotkey Regular Expression on naming convention

AutoHotkey Regular Expression on naming conventionAutoHotkey Merchandise-White Stress ballI’ve found the best way to learn RegEx is to actually play with it.  For that reason I’m making a few videos that will demonstrate actual use-cases.  In this example I demonstrate applying an AutoHotkey Regular Expression on naming convention.  As I show in this video, there are a ton of different ways you can write a Regular Expression that will capture what you need.  There isn’t a “right” & “wrong” way, just make sure what you use is reliable and makes sense to you.

Video demonstrating AutoHotkey Regular Expression on naming convention