С учетом ввода:
- дают 4 машины
- 5 автомобилей
- GA 5 Cars @ Mustang шесть выхлопных газов
необходимо
- Give -1 Cars @ mustang
- Give Cars @ mustang
- Give 3 Cars @ ford
- Даешь 5 машин @ cobra_gt
И выражение:
/Give (\d+) Cars @(\w+)|GA (\d+) Cars @(\w+)/i
- Не соответствует, потому что вы только
сопоставление с чем-то, что имеет
"
@something
" в нем.
- То же, что # 1
- Это соответствует ожидаемому
-
-
перед 1
приводит к сбою матча
- Нет числа между
Give
и Cars
- Это соответствует ожидаемому
- Это соответствует ожидаемому
Относительно того, почему он не создает «правильный» массив, это действительно так. В вашем выражении у вас есть 4 группы захвата. Тот факт, что ваш ввод соответствует второму из выражений OR («GA
»), не означает, что номера групп начинаются с 1, у групп всегда будет одинаковое число, независимо от того, как вы подходите. ..
/Give (\d+) Cars @(\w+)|GA (\d+) Cars @(\w+)/i
^ 1 ^ 2 ^3 ^4
Таким образом, если вы соответствуете регистру 'Give
', у вас будут группы 1 и 2, а если вы совпадете с регистром GA
, группы 3 и 4 будут заполнены.
(Кроме того, модификатор 'i
' работает нормально, вы просто неправильно учитываете свои данные)