Как с помощью ack найти в массивах строки без кавычек ?.
Я перехожу на php 7.2, и это регулярное выражение, которое я использую:
ack -w --heading --php "\[[a-zA-Z0-9_]*]"
Я что-то упускаю, на первый взгляд все в порядке. Однако я не знаю, давал ли я ложные срабатывания или ложные отрицания, пропустив какой-то случай.
Спасибо
Действительно, полезно показать некоторые примеры входных данных и ожидаемых результатов.
После просмотра документации ack кажется, что переключатель -w означает "-w, --word-regexp -> Заставить ШАБЛОН соответствовать только целым словам", поскольку ваш шаблон содержит буквальные квадратные скобки, я не уверен, что он может вернуть какой-либо результат (в зависимости от того, что означает целые слова). Как было сказано ранее, в вашем посте не хватает образца.
Другое дело, поскольку вы ищете некотируемые индексы ассоциативных массивов php (которые могут быть константами или числовыми индексами в стороне), это означает, что код, который вы пытаетесь обновить, очень старый, и в этом случае вам, вероятно, придется пройти трудный путь (перечитайте и перепишите код глазами и пальцами). Жаль тебя.






TL; DR: используйте ack --heading --php "\[[a-zA-Z0-9_]*]" без -w.
Как упоминал @CasimiretHippolyte в комментариях, -w требует, чтобы шаблон «соответствовал только целым словам». Опция -w просто обертывает ваш шаблон поиска в \b, который требует пробелов в начале и конце совпадения.
Удалите опцию -w, и вы должны увидеть недостающие результаты.
вы также находите
[], который вам не нужен. Заменить*на+