我在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}
我使用他们的在线测试工具进行了测试,它确实可以满足我所有需求。将其作为 ColdFusion 的 REFind() 参数粘贴并没有按预期工作,并返回一个无用的错误消息。
我正在使用 ColdFusion,因此如果需要,我可以访问 Java 类。Java 或 ColdFusion 的答案都很有帮助。
一个好的示例字符串可能是:5' 1/2"
编辑
我需要利用正则表达式中的组来提取数据,而不仅仅是用它来验证字符串。我想这意味着我应该使用 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