Lua Pattern matching
string.find(str, pattern [, init [, plain]]) -- Returns start and end index of match in str
string.match(str, pattern [, index]) -- Matches a pattern once (starting at index)
string.gmatch(str, pattern) -- Returns a function that iterates through all matches in str
string.gsub(str, pattern, repl [, n]) -- Replaces substrings (up to a max of n times)
. represents all characters
%a represents all letters
%l represents all lowercase letters
%u represents all uppercase letters
%d represents all digits
%x represents all hexadecimal digits
%s represents all whitespace characters
%p represents all punctuation characters
%g represents all printable characters except space
%c represents all control characters
[set] represents the class which is the union of all characters in set.
[^set] represents the complement of set
* greedy match 0 or more occurrences of previous character class
+ greedy match 1 or more occurrences of previous character class
- lazy match 0 or more occurrences of previous character class
? match exactly 0 or 1 occurrence of previous character class
Remarks
#
Throughout some examples, the notation ():function is used, which is equivalent to string.function(, ) because all strings have a metatable with the __index field set to the string table
=========================================
string.gsub - возвращает копию строки, в которой все вхождения 'шаблона поиска' заменяются на 'шаблон замены', который может быть строкой, таблицей или функцией. Также возвращает как второе значение – общее количество проведенных подстановок.
Если 'шаблон замены' строка, то используется ее значение для замены. Символ % работает как символ со специальным назначением: любая последовательность в 'шаблоне замены' в виде %n, где n от 1 до 9, заменяется на n-ную захваченную подстроку. Последовательность %0 заменяется на найденную подстроку.
Если 'шаблон замены' является таблицей, то она запрашивается для каждого сравнения, с использованием первого захваченного значения как ключ; если шаблон не содержит захватов, то используется результат простого сравнения как ключ.
Если 'шаблон замены' является функцией, то эта функция вызывается каждый раз, когда обнаруживается совпадение. В качестве параметров ей передаются все захваченные подстроки; если шаблон не содержит захватов, то передается результат сравнения как один параметр.
. -- Любой символ
%a -- Буква (только англ.!)
%A -- Любая буква (русская), символ, или цифра, кроме английской буквы
%c -- Управляющий символ
%d -- Цифра %D -- Любая буква, или символ, кроме цифры
%l -- Буква в нижней раскладке (только англ.!)
%L -- Любая буква, символ, или цифра, кроме английской буквы в нижней раскладке
%p -- Символ пунктуации
%P -- Любая буква, символ, или цифра, кроме символа пунктуации
%s -- Символ пробел
%S -- Любая буква, символ, или цифра, кроме символа пробела
%u -- Буква в верхней раскладке (только англ.!)
%U -- Любая буква, символ, или цифра, кроме английской буквы в верхней раскладке
%w -- Любая буква, или цифра (только англ.!)
%W -- Любой символ, или буква (русская), кроме английской буквы, или цифры
%x -- Шестнадцатеричное число
%X -- Любая буква, или символ, кроме цифры, или английской буквы, используемой в записи шестнадцатеричного числа
%z -- Строковые параметры, содержащие символы с кодом 0