gpt4 book ai didi

java - 我将如何在 ColdFusion(或 Java)中实现这个正则表达式?

转载 作者:搜寻专家 更新时间:2023-11-01 02:33:34 24 4
gpt4 key购买 nike

我找到了 this very handy regular expression在 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

最佳答案

ColdFusion 不支持 ? 语法。我不熟悉该语法,但看起来它被用来为捕获的子表达式分配名称。例如,第一个子表达式是表示英尺的数字,因此它具有 ? 标记。您可以删除这些标签而不影响正则表达式匹配的内容。

我还没有测试过它,但我在该正则表达式中看到的所有其他元素在 ColdFusion 中都受支持,因此在删除所有 ? 标记后 REFind() 应该可以工作。使用“returnsubexpressions”参数当然支持访问子表达式。请参阅有关 REFind() 的标准 CF 文档。

顺便说一句,正则表达式似乎有点冗长。 {0,1} 很少见,因为 ?意味着同样的事情。 {1} 更为罕见,因为它是分组的默认值,因此可以完全省略。

附录

regex = "(?:(?:(\\d+)[ ]*(?:'|ft)){0,1}[ ]*(\\d*(?![/\\w])){0,1}(?:[ ,\\-]){0,1}((\\d*)\\/(\\d*)){0,1}(\\.\\d*){0,1}(?:\\x22| in))|(?:(\\d+)[ ]*(?:'|ft)[ ]*){1}";
subs = REFind(regex,input,1,"True");
if (subs.pos[1] eq 0) {
found = "False";
} else {
found = "True";
feet = Mid(input,subs.pos[2],subs.len[2]);
inches = Mid(input,subs.pos[3],subs.len[3]);
fraction = Mid(input,subs.pos[4],subs.len[4]);
fracNum = Mid(input,subs.pos[5],subs.len[5]);
fracDem = Mid(input,subs.pos[6],subs.len[6]);
decimal = Mid(input,subs.pos[7],subs.len[7]);
if (feet is "") {
// Use the _other_ feet
feet = Mid(input,subs.pos[8],subs.len[8]);
}
}

关于java - 我将如何在 ColdFusion(或 Java)中实现这个正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3673679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com