Я нашел это очень удобное регулярное выражение на regexlib.com, но я не знаю, как реализовать его в моем приложении.
(?:(?:(?<Feet>\d+)[ ]*(?:'|ft)){0,1}[ ]*(?<Inches>\d*(?![/\w])){0,1}(?:[ ,\-]){0,1}(?<Fraction>(?<FracNum>\d*)\/(?<FracDem>\d*)){0,1}(?<Decimal>\.\d*){0,1}(?:\x22| in))|(?:(?<Feet>\d+)[ ]*(?:'|ft)[ ]*){1}
Я протестировал егоиспользуя их онлайн-инструмент тестирования, и он действительно делает все, что мне нужно.Вставка его в качестве параметра в REFind () ColdFusion, как и ожидалось, не сработала и вернула бесполезное сообщение об ошибке.
Я работаю в ColdFusion, поэтому при необходимости имею доступ к классам Java.Ответы на Java или ColdFusion будут полезны.
Хорошая примерная строка будет выглядеть примерно так: 5 '1/2 "
EDIT
Мне нужно использовать группы в регулярном выражении, чтобы извлечь данные, а не просто использовать их для проверки строки. Я думаю, это означает, что мне следует использовать REMatch ()? Пожалуйста, извините, что у меня нет опыта работы с регулярным выражением!
РЕДАКТИРОВАТЬ 2
Кажется, что использование REFind () с этим выражением:
(?:(?:(\\d+)[ ]*(?:'|ft)){0,1}[ ]*(\\d*(?![/\\w])){0,1}(?:[ ,\\-]){0,1}((\\d*)\\/(\\d*)){0,1}(\\.\\d*){0,1}(?:\\x22| in))|(?:(\\d+)[ ]*(?:'|ft)[ ]*){1}
не находит совпадений для большинства тестовых данных, которые я предоставляюэто, включая те, которые возвращают совпадения с помощью тестера regexlib.com: 1ft 2-3/4 in, 2' 3 4/5", 3ft, 4', 5 in, 6", 7.125 in, 3ft 4.5 in