Регулярное выражение - двухзначный диапазон (23-79)?

Я читал вопросы о регулярных выражениях на этом сайте, но моя проблема, кажется, немного отличается. Мне нужно сопоставить двузначное число, например, от 23 до 75. Я делаю это в системе HP-UX Unix. Я нашел примеры от 3 до 44, но или любое другое число, ничего фиксированного по длине, что немного удивительно, но, возможно, я не понимаю ответ с примером переменной длины.

 Burhan Khalid23 мая 2013 г., 20:40
Какие'не так с?23
 Jerry Coffin23 мая 2013 г., 20:36
Позвольте мне второй @Paulpro 'рекомендация - пока регулярное выражениеМожно сделай этобедный (ямне хочется сказать "ужасный») инструмент для работы.
 AbsoluteƵERØ23 мая 2013 г., 23:26
@Paulpro, если ониПри использовании RegEx в командной строке регулярное выражение может измениться при вводе новой команды, если они знают, что ониделаешь ОП просит пример на HP-UX. Если вы можете предоставить какие-либо другие методы для HP-UX, которые неt используйте Regex, пожалуйста, поделитесь.
 Jerry Coffin24 мая 2013 г., 02:19
@ AbsoluteƵЭроКакая частьдля работы" А не было»ты понимаешь? Некоторые из нас на самом деле являются профессионалами, которые заботятся о таких вещах, как удобочитаемость и ремонтопригодность, а не просто способность взломать что-то, что работает для определенной ситуации в определенных обстоятельствах.
 AbsoluteƵERØ23 мая 2013 г., 23:27
@BurhanKhalid, хотя кажется, что это имеет смысл, вам нужно написатьif оператор в зависимости от языка, который использует OP для выполнения сопоставления с образцом.
 AbsoluteƵERØ23 мая 2013 г., 23:25
@JerryCoffin Если REGEX настолько ужасен, то почему он включается в такие вещи, как ed, sed, awk, grep и большинство текстовых редакторов? Это сам язык сопоставления с образцом. Просто потому, что вам может быть трудно заставить его работать на вас, нене значит, что другие люди могутиспользовать его, чтобы сделать [почти] все в командной строке.
 AbsoluteƵERØ24 мая 2013 г., 05:06
@JerryCoffin Если тытолько говорим оработа" в отношении того, что сказал Paulpro, тогда я вижу, что выповторяю, это не лучший подход к этому. Я не'Я не делал никаких предположений, когда я пытался дать широкий набор ответов и думал о 50 возможных способах применения Regex в различных ситуациях. ОП не сделалt уточнить, для чего это было (или для чего оно использовалось). Он может использоватьvi за все, что мы знаем. Вне Павлаоценкарегулярное выражение является ужасным инструментом для работы " кажется необоснованным У меня есть HP-UX VM самостоятельно.
 Paulpro23 мая 2013 г., 23:36
@ AbsoluteƵERØ I 'Я не знаком с HP-UX, но он может делать это в любой командной строке, верно? Я'Я уверен, что вы можете установить оболочку типа bash на HP-UX. Мне кажется более интуитивным, что еслиЕсли в некотором сценарии, то при изменении диапазона все, что нужно изменить, это границы диапазона в коде, а не регулярное выражение. Если оно'Это не в сценарии и является единовременной сделкой, чем, по моему мнению, регулярное выражение является вполне допустимым способом сделать это. Вы'«Ответ очень хороший ответ для ОП»вопрос, кстати :)
 Paulpro23 мая 2013 г., 20:32
Вы уверены, что хотите здесь регулярное выражение? Кажется, что преобразование в целочисленный тип с последующим целочисленным сравнением может быть более подходящим. Особенно, если диапазон может измениться в будущем.
 Jerry Coffin24 мая 2013 г., 04:57
@ AbsoluteƵЭро: Ты все еще необъяснил, что часть "для работы" ты нене понимаю, ноиметь еще более ясно, что вы просто нене понимаю концепции. HP-UX здесь почти не имеет значения - этоЭто довольно разнообразный UNIX со всеми обычными инструментами. Конечно, так как ОП нене объяснил, какую работу онэто действительно делает, этоневозможно с уверенностью сказать, чтоправильно, хотя онСказано достаточно, чтобы на 100% понять, что регулярное выражение - неправильный выбор.
 AbsoluteƵERØ24 мая 2013 г., 04:14
@JerryCoffin Извините, выперепутал сэр. Есть тысячи людей, которые ежедневно используют Regex для сопоставления с образцом в своей профессии. Я оказался одним из них. Что ты предлагаешь "для работы" под HP-UX?

Ответы на вопрос(3)

Если я хочу 2-значный диапазон 0-63

/^[0-9]|[0-5][0-9]|6[0-3]$/
[0-9] разрешит одну цифру от 0 до 9

[0-5] [0-9] позволят от 00 до 59

6 [0-3] позволит от 60 до 63

Таким образом, вы можете взять регулярное выражение для любого двухзначного диапазона

Этот инструмент именно то, что вам нужно:Regex_For_Range

С 29 до 79:\b(2[3-9]|[3-7][0-9])\b

С 29 до 75:\b(29|[3-6][0-9]|7[0-5])\b

И просто для удовольствия, с 192 по 1742 год\b(19[2-9]|[2-9][0-9]{2}|1[0-6][0-9]{2}|17[0-3][0-9]|174[0-2])\b :)

 weston07 мар. 2016 г., 12:20
Ну, если вы их знаете, может быть, вы могли бы убедить их с открытым исходным кодом. Опубликовать на github или здесь
 sp00m07 мар. 2016 г., 12:03
@ Weston Очень плохо! Я'Я свяжусь с ними, чтобы узнать причину этой аутентификации, и я вернусь к вам.
 weston07 мар. 2016 г., 11:45
У инструмента есть учетные данные прямо сейчас, знаете ли вы владельцев?
Решение Вопроса

Так как тыне указав, является ли это в дополнение к любым другим символам (или в середине большей строки), я 'мы включили здесь логику, чтобы указать, что вам нужно, чтобы соответствовать числовой части строки. Это должно привести вас туда. Мы'создаем диапазон для вторых чисел, которые мыищем разрешающих только этих персонажей. Тогда мы'сравнивая его с другими диапазонами как:or

(2[3456789]|[3456][0-9]|7[012345])

Как уже отмечалось, вы можете сделать это, так как поддиапазоны также принимаются (зависит от реализации REGEX в приложении, которое вы 'повторное использование):

(2[3-9]|[3-6][0-9]|7[0-5])

Исходя из названия, вы изменили бы последние 5 на 9, чтобы перейти от 75-79:

(2[3-9]|[3-6][0-9]|7[0-9])

Если вы пытаетесь сопоставить эти числа конкретно как строку (от начала до конца), вы должны использовать модификаторы^ а также$ чтобы указать начало и конец строки.

Здесь есть отличная техническая справка по диапазонам Regex:

http://www.regular-expressions.info/numericranges.html

Если ты'Если вы используете что-то вроде grep и пытаетесь сопоставить строки, содержащие число, с другим контентом, то вы можете сделать что-то подобное для диапазонов до 79:

grep "[^0-9]?(2[3-9]|[3-6][0-9]|7[0-9])[^0-9]?" folder
 user241481724 мая 2013 г., 15:45
Всем, кто предложил ответы, я искренне благодарен. 3 части ответов работают. Мои извинения, я должен был включить это в то, что я делаю выбор файлов для операции SCP. Я выбираю файлы для передачи файлов SCP, и они находятся в середине строки. До сих пор мне приходилось делать несколько запусков SCP, так как я не мог понять, как это сделать. Еще раз спасибо!!!
 AbsoluteƵERØ23 мая 2013 г., 20:53
@RobinVanPersi мы 'используя| что означает или и мыиспользуя[] скобки для обозначения разрешенных символов.
 AbsoluteƵERØ23 мая 2013 г., 20:34
Правильно. Я'мы сталкивались с случаями, когда это неработать в каждой реализации, но в соответствии со стандартом это должно быть.
 AbsoluteƵERØ23 мая 2013 г., 20:59
@RobinVanPersi ОП не сделалне указывает, было ли это в середине строки или нет.
 SolidSnake23 мая 2013 г., 20:46
это вернет истину, если вы передадите 2345
 Oded23 мая 2013 г., 20:31
Может быть сокращено до(2[3-9]|[3-6][0-9]|7[0-5])

Ваш ответ на вопрос