Я всегда использовал термин "магическое число" по-другому как неясное значение, сохраненное в структуре данных, которая может быть проверена как быстрая проверка достоверности. Например, файлы gzip содержат 0x1f8b08 как свои первые три байта, файлы класса Java запускаются с 0xcafebabe, и т.д.
Вы часто видите магические числа, встроенные в форматы файлов, потому что файлы могут быть отправлены вокруг скорее случайно и потерять любые метаданные о том, как они были созданы. Однако магические числа также иногда используются для структур данных в оперативной памяти, как ioctl () вызовы.
быстрая проверка А магического числа прежде, чем обработать файловую структуру или структуру данных позволяет сигнализировать об ошибках рано, а не подонке полностью посредством потенциально долгой обработки, чтобы объявить, что вход был полным вздором.
Это работает?
"1 | 2 3 4 oh 5 oh oh | e eewrewr | 7 |" .split ('|') [1] .scan (/ \ d /)
, если вы хотите использовать только регулярное выражение ...
\|[\d\s\w]+\|
, а затем
\d
, но это, вероятно, не лучшее решение
Ответ Аруна идеален, если вам нужны только цифры. т.е.
"1|2 3 4 oh 5 oh oh|e eewrewr|7|".split('|')[1].scan(/\d/)
# Will return ["2", "3", "4", "5"]
"1|2 3 4 oh 55 oh oh|e eewrewr|7|".split('|')[1].scan(/\d/)
# Will return ["2", "3", "4", "5", "5"]
Если вам нужны числа,
# Just adding a '+' in the regex:
"1|2 3 4 oh 55 oh oh|e eewrewr|7|".split('|')[1].scan(/\d+/)
# Will return ["2", "3", "4", "55"]