Найти в Дзене
Хочу Знать Всё

Изучаем LUA Значения, найденные с помощью match, читаем строку

1) = line:match("([^|]+)|([^|]+)")
2) = line:match("([%d%.]+)|(%d+)")
В этом фрагменте на языке программирования Lua выполняется задача сопоставления (парсинга) строки для извлечения двух значений, разделённых символом |. Давайте разберём по частям:
line:match("([^|]+)|([^|]+)"):
line — это строка, над которой выполняется операция сопоставления.
:match(pattern) — метод строки в Lua, который ищет шаблон pattern в строке line.
"([^|]+)|([^|]+)" — это шаблон для поиска:
([^|]+) — захватывает одну или более любых символов, кроме вертикальной черты (|). Скобки означают, что мы хотим сохранить захваченную подстроку.
| — просто символ-разделитель.
Таким образом, шаблон полностью пытается найти две подстроки, которые разделены символом |.
Выбор между этими двумя вариантами зависит от формата данных, которые вы ожидаете в строке line.
Регулярное выражение "([^|]+)|([^|]+)":
Это выражение разделит строку на две группы, разделенные символом |. Оно будет захватывать любые последовательност

1) = line:match("([^|]+)|([^|]+)")
2) = line:match("([%d%.]+)|(%d+)")

В этом фрагменте на языке программирования Lua выполняется задача сопоставления (парсинга) строки для извлечения двух значений, разделённых символом |.

Давайте разберём по частям:

line:match("([^|]+)|([^|]+)"):

line — это строка, над которой выполняется операция сопоставления.
:match(pattern) — метод строки в Lua, который ищет шаблон pattern в строке line.

"([^|]+)|([^|]+)" — это шаблон для поиска:
([^|]+) — захватывает одну или более любых символов, кроме вертикальной черты (|). Скобки означают, что мы хотим сохранить захваченную подстроку.
| — просто символ-разделитель.

Таким образом, шаблон полностью пытается найти две подстроки, которые разделены символом |.

Выбор между этими двумя вариантами зависит от формата данных, которые вы ожидаете в строке line.

Регулярное выражение "([^|]+)|([^|]+)":

Это выражение разделит строку на две группы, разделенные символом |. Оно будет захватывать любые последовательности символов, которые не являются |, для каждой части строки. Это более универсальный способ, который подходит, если вам нужно захватить любые символы до и после разделителя.

Регулярное выражение "([%d%.]+)|(%d+)":

Это более специфичное выражение, которое ожидает, что первая часть строки будет числом (включая десятичную точку), а вторая часть — целым числом.

Если ваши данные строго соответствуют этому формату (например, первая часть цена с возможной десятичной частью, а вторая часть объем), то это выражение будет более точно соответствовать вашим требованиям.

Если ваши данные гарантированно следуют второму формату — с числовыми значениями, где в первой части могут быть дробные числа, а во второй — только целые, тогда второй вариант будет предпочтительным.

В противном случае, если данные могут содержать любые символы, первый более универсальный вариант подойдет лучше.