Я хочу преобразовать строку выражения в массивы. Для строки (10+2)/33
ожидаемым результатом является ['(', '10', '+', '2', ')', '/', '33']
. Там могут быть пробелы между ними, а действительными операторами являются +-*/()
.Как разбить выражение на массив?
ответ
Вы можете использовать этот шаблон:
"(10+2)/33".split(/\b|(?!\d)/)
(Очевидно, что цель здесь, чтобы разделить строку, а не проверять, если символы разрешены).
Идея заключается в том, чтобы использовать тот факт, что (
, )
, +
, -
, /
, *
одиночные символы, которые не являются в классе \w
характера. Таким образом, \b
будет соответствовать, когда за цифрой следует один из этих символов и наоборот. (?!\d)
(отрицательный lookakead: не следует цифрой), так как это вторая альтернатива, похожа на \B(?!\d)
и будет соответствовать двум признакам.
Если вы хотите иметь дело с возможными пробелами, вам нужно только добавить \s*
в каждой отрасли:
"(10+2)/33".split(/\s*\b\s*|\s*(?!\d)/)
Обратите внимание, что он может генерировать пустой элемент в начале.
Чтобы избежать этой проблемы, вы можете использовать метод scan
с различным рисунком:
" (2 (10+2)/33) ".scan(/\G\s*\K(?:\d+|\S)/)
Где \G
гарантирует, что все матчи являются смежными с начала строки и \K
отбрасывает все налево от матча результат (возможные белые пробелы).
"(10 + 2)/33".delete(" ").split(/(\D)/).reject(&:empty?)
# => ["(", "10", "+", "2", ")", "/", "33"]
Вы также можете использовать функцию scan
.
> s = "(10+2)/33"
> s.scan(/\d+|[^\s\w]/)
=> ["(", "10", "+", "2", ")", "/", "33"]
> s.scan(/\d+|[^\s\d]/)
=> ["(", "10", "+", "2", ")", "/", "33"]
- 1. Разбить адрес на массив
- 2. Как разбить строку на регулярное выражение
- 3. Как разбить массив на PHP?
- 4. Как разбить строку на массив
- 5. как разбить данные на массив?
- 6. Как разбить строку на массив
- 7. Как разбить массив на 3?
- 8. Как разбить строку на массив
- 9. Как разбить массив на блоки
- 10. Как разбить строку на массив?
- 11. Как разбить массив на PHP?
- 12. Как разбить массив на многомерный массив?
- 13. Как разбить регулярное выражение на части?
- 14. Как разбить выражение на for-loops
- 15. Как разбить массив на элементы на основе
- 16. Как разбить массив?
- 17. Разбить массив
- 18. Как разбить массив javascript?
- 19. Как разбить текстовый массив?
- 20. Как разбить массив Integer?
- 21. Как разбить массив?
- 22. Как разбить массив байтов
- 23. Как эхо разбить массив?
- 24. Как разбить массив JSON
- 25. Разбить массив на отдельные куски
- 26. Разбить массив объектов на строки
- 27. Разбить массив на массив в массиве
- 28. PHP: Разбить массив на условиях
- 29. Как разбить многомерный массив на PHP?
- 30. Как разбить массив на меньшие массивы PHP
Я могу сделать result_array.compact для удаления пробелов. Спасибо! – BugsBunny