- Баллы
- 76
- Имя в Minecraft
- maxdikiy
Всё верно, так и должно быть.Допустим, есть regex:{\d+\s} и input:{12 13 14}, тогда %group00% == "12 ", %group10% == "13 ", %group30% == ???. А что тогда 01? %group01% == 12" " == \s?
Если бы вы поставили пробел после цифры 14 ( input:{12 13 14 }), тогда бы %group30% =="14"
В общем, я тоже не силён в регулярных выражениях, но действие REGEX я испытывал на этом сайте:
https://regex101.com/
и всё совпадало.
%groupNM%,
N - количество совпадений по маске
M- порядковый номер группы в одном совпадении (индекс группы начинается с 1). Проще говоря, сколько скобок "( )" в маске столько и групп.
Даю маленький пример, как быстро разобраться в REGEX
Допустим, нам необходимо отфильтровать
"a12 b13 c14 a21 b22 c23" по маске: [\d]+
В маске скобок нет, значит и групп тоже нет, т.е результат будет между %group00%...%group50%
Код:
EXEC:
regex0:
actions:
- REGEX=input:{a12 b13 c14 a21 b22 c23} regex:{[\d]+}
- 'log=group00: %group00%'
- 'log=group10: %group10%'
- 'log=group20: %group20%'
- 'log=group30: %group30%'
- 'log=group40: %group40%'
- 'log=group50: %group50%'
Код:
EXEC:
regex1:
actions:
- REGEX=input:{a12 b13 c14 a21 b22 c23} regex:{([^\d+])[\d]+}
- 'log=group00: %group00%'
- 'log=group01: %group01%'
- 'log=group10: %group10%'
- 'log=group11: %group11%'
- 'log=group20: %group20%'
- 'log=group21: %group21%'
- 'log=group30: %group30%'
- 'log=group31: %group31%'
- 'log=group40: %group40%'
- 'log=group41: %group41%'
- 'log=group50: %group50%'
- 'log=group51: %group51%'
([^\d])([\d]+) , а результат будет таким: %groupNM%, N=0..5, M=0..2
Код:
EXEC:
regex2:
actions:
- REGEX=input:{a12 b13 c14 a21 b22 c23} regex:{([^\d])([\d]+)}
- 'log=group00: %group00%'
- 'log=group01: %group01%'
- 'log=group02: %group02%'
- 'log=group10: %group10%'
- 'log=group11: %group11%'
- 'log=group12: %group12%'
- 'log=group20: %group20%'
- 'log=group21: %group21%'
- 'log=group22: %group22%'
- 'log=group30: %group30%'
- 'log=group31: %group31%'
- 'log=group32: %group32%'
- 'log=group40: %group40%'
- 'log=group41: %group41%'
- 'log=group42: %group42%'
- 'log=group50: %group50%'
- 'log=group51: %group51%'
- 'log=group52: %group52%'
P.S. Эти примеры можно испытывать в консоли:
/exec regex0
/exec regex1
/exec regex2
Действительно была ошибка. Вроде бы исправил.