InputList: `n delimited list to be sorted
Expression: Regular Expression to sort by
SortOptions: Options to apply to sort (like R or C)
SubPats: number of subpatterns you want (leave blank to ignore)
Example:
TestList = ( George12:45Yellow Amy11:33Blue Jimmy13:13Purple Benji03:87Tan ) msgbox % RegExSort(TestList, "(\d\d):(\d\d)", 2) return RegExSort(InputList, Expression, Subpats = 1, SortOptions = "N") { loop, parse, InputList, `n { RegExMatch(A_LoopField, Expression, Match) ;msgbox, s:%subpats% if SubPats!=1 { loop, %SubPats% { indexmatch := Match%A_Index% Matched := Matched indexmatch ;msgbox, Matched: %matched% A_Index: %A_Index% indexmatch: %indexmatch% indexmatch := } } else { Matched := Match } If Matched != { WorkingString := WorkingString A_LoopField "cnoiza`\" Matched "cnoizb`n" } matched := ;msgbox, a: %A_LoopField% `ne: %Expression%`ni: %InputList% `no: %SortOptions% `nm:%Match1% `nw:%WorkingString% } Sort, WorkingString, \ %SortOptions% ;msgbox, w:%WorkingString% o:%SortOptions% Return RegExReplace(WorkingString, "cnoiza.*?cnoizb") }