Lua не имеет регулярных выражений, главным образом потому, что полная библиотека регулярных выражений будет больше, чем сама Lua.
Вместо этого у Lua есть соответствующие шаблоны , которые гораздо менее эффективны (но все же достаточны для многих случаев использования):
- Нет соответствия "границы слова",
- без альтернатив,
- , а также без предвидения или аналогичных.
Я думаю, что нет шаблона Lua, который бы соответствовал каждому возможному вхождению вашей строки, и нет другого, что означает, что вы каким-то образом должны обойти это.
Шаблон, предложенный Стюартом %d*%.?%d*
, соответствует всем десятичным числам (с точкой или без нее), но также соответствует пустой строке, что не совсем полезно. %d+%.?%d*
соответствует всем десятичным числам с по крайней мере одной цифрой перед точкой (или без точки), %d*%d.?%d+
соответствует всем десятичным числам по крайней мере с одной цифрой после точки (или без точки). %.%d+
соответствует десятичным числам без цифры перед точкой.
Простым решением будет поиск более чем одного из этих шаблонов (например, %d+%.?%d*
и %.%d+
) и объединение результатов. Затем посмотрите на места, где вы их нашли, и посмотрите, есть ли за ними «]».
Я немного поэкспериментировал с границей .
Шаблон %f[%.%d]%d*%.?%d*%f[^%.%d%]]
соответствует всем десятичным числам, которым предшествует нечто, не являющееся ни цифрой, ни точкой (или ничем), а затем что-то, что не является ни ]
, ни цифрой, ни точкой (или ничем). Это также соответствует одной точке.